diff options
-rw-r--r-- | 2022/day15.awk | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/2022/day15.awk b/2022/day15.awk new file mode 100644 index 0000000..0840487 --- /dev/null +++ b/2022/day15.awk @@ -0,0 +1,26 @@ +BEGIN { + FS = "[ =,:]+"; + y = 2000000; +} +function abs(x) { + return (x < 0 ? -x : x); +} +function dist(x1, y1, x2, y2) { + return abs(x1 - x2) + abs(y1 - y2); +} +{ + if ($14 == y) B[$12] = 1; + r = dist($4, $6, $12, $14); + if (abs(y - $6) <= r) { + n = r - abs(y - $6); + for (x = $4-n; x <= $4+n; ++x) { + Y[x] = 1; + } + } +} +END { + for (x in B) { + delete Y[x]; + } + print length(Y); +} |