diff options
Diffstat (limited to '2025')
| -rwxr-xr-x | 2025/05/puzzle-1.awk | 19 | ||||
| -rwxr-xr-x | 2025/05/puzzle-2.awk | 31 |
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 +} |