From 2ecc5db82d92d7a6fffbe7f8c1f318583a80ea24 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Thu, 8 Dec 2022 13:01:41 -0500 Subject: Solve day 8 part 1 --- 2022/day08.awk | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 2022/day08.awk diff --git a/2022/day08.awk b/2022/day08.awk new file mode 100644 index 0000000..35505e4 --- /dev/null +++ b/2022/day08.awk @@ -0,0 +1,39 @@ +function visible(x, y) { + if (x == 1 || x == right) return 1; + if (y == 1 || y == bottom) return 1; + for (xx = x-1; xx >= 1; --xx) { + if (m[xx,y] >= m[x,y]) break; + } + if (!xx) return 1; + for (xx = x+1; xx <= right; ++xx) { + if (m[xx,y] >= m[x,y]) break; + } + if (xx > right) return 1; + for (yy = y-1; yy >= 1; --yy) { + if (m[x,yy] >= m[x,y]) break; + } + if (!yy) return 1; + for (yy = y+1; yy <= bottom; ++yy) { + if (m[x,yy] >= m[x,y]) break; + } + if (yy > bottom) return 1; + return 0; +} +BEGIN { + FS = ""; +} +{ + for (x = 1; x <= NF; ++x) { + m[x,NR] = $x; + } + right = NF; + bottom = NR; +} +END { + for (x = 1; x <= right; ++x) { + for (y = 1; y <= bottom; ++y) { + if (visible(x, y)) vis++; + } + } + print vis; +} -- cgit 1.4.1