diff options
Diffstat (limited to '2022')
-rw-r--r-- | 2022/day08.awk | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/2022/day08.awk b/2022/day08.awk index 35505e4..3ce1a50 100644 --- a/2022/day08.awk +++ b/2022/day08.awk @@ -19,6 +19,28 @@ function visible(x, y) { if (yy > bottom) return 1; return 0; } +function view(x, y) { + if (x == 1 || x == right) return 0; + if (y == 1 || y == bottom) return 0; + v = 1; + for (xx = x-1; xx > 1; --xx) { + if (m[xx,y] >= m[x,y]) break; + } + v *= x-xx; + for (xx = x+1; xx < right; ++xx) { + if (m[xx,y] >= m[x,y]) break; + } + v *= xx-x; + for (yy = y-1; yy > 1; --yy) { + if (m[x,yy] >= m[x,y]) break; + } + v *= y-yy; + for (yy = y+1; yy < bottom; ++yy) { + if (m[x,yy] >= m[x,y]) break; + } + v *= yy-y; + return v; +} BEGIN { FS = ""; } @@ -33,7 +55,9 @@ END { for (x = 1; x <= right; ++x) { for (y = 1; y <= bottom; ++y) { if (visible(x, y)) vis++; + if (view(x, y) > max) max = view(x, y); } } print vis; + print max; } |