aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2025-12-07 07:32:00 +0100
committerThomas Voss <mail@thomasvoss.com> 2025-12-07 07:32:00 +0100
commitde96af0762cf5abae09788434f407e7fc86d1b24 (patch)
treeca8dec8427b460712d3818f28a77803bede21f8e
parent703c33211b15b714f00aaeefc880f3c5d594493b (diff)
Add 2025 day 5 solutions
-rwxr-xr-x2025/05/puzzle-1.awk19
-rwxr-xr-x2025/05/puzzle-2.awk31
2 files changed, 50 insertions, 0 deletions
diff --git a/2025/05/puzzle-1.awk b/2025/05/puzzle-1.awk
new file mode 100755
index 0000000..acfe21b
--- /dev/null
+++ b/2025/05/puzzle-1.awk
@@ -0,0 +1,19 @@
+#!/usr/bin/awk -f
+
+BEGIN { FS = "-" }
+
+NF == 2 {
+ xs[NR, 1] = $1
+ xs[NR, 2] = $2
+}
+
+NF == 1 {
+ for (i = 1; i <= length(xs) / 2; i++) {
+ if ($1 >= xs[i, 1] && $1 <= xs[i, 2]) {
+ cnt++
+ break
+ }
+ }
+}
+
+END { print cnt }
diff --git a/2025/05/puzzle-2.awk b/2025/05/puzzle-2.awk
new file mode 100755
index 0000000..3dfc661
--- /dev/null
+++ b/2025/05/puzzle-2.awk
@@ -0,0 +1,31 @@
+#!/usr/bin/gawk -f
+
+function rangecmp(i1, v1, i2, v2)
+{
+ return v1[1] - v2[1]
+}
+
+function max(x, y)
+{
+ return x > y ? x : y
+}
+
+BEGIN { FS = "-" }
+
+NF == 2 {
+ xs[NR][1] = $1
+ xs[NR][2] = $2
+}
+
+END {
+ asort(xs, xs, "rangecmp")
+ for (i in xs) {
+ if (xs[i][2] <= m)
+ continue
+ cnt += xs[i][2] - max(xs[i][1], m)
+ if (xs[i][1] > m)
+ cnt++
+ m = xs[i][2]
+ }
+ print cnt
+}