From a0249842eeeb479640f079a260436c959b9ef5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Engl=C3=B6f=20Ytterstr=C3=B6m?= Date: Wed, 26 Nov 2025 00:38:00 +0100 Subject: [PATCH] Solve 2022 day 8 pt 1-2 --- 2022-python/output/day_08.py | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 2022-python/output/day_08.py diff --git a/2022-python/output/day_08.py b/2022-python/output/day_08.py new file mode 100644 index 0000000..d8906f8 --- /dev/null +++ b/2022-python/output/day_08.py @@ -0,0 +1,60 @@ +from math import prod + +from output import matrix + + +def solve(data): + M, R, C = matrix(data) + p1 = 2 * R + 2 * C - 4 + p2 = 0 + for row in range(1, R - 1): + for col in range(1, C - 1): + h = int(M[row][col]) + visible = 0 + score = [] + + for i, dy in enumerate(range(row - 1, -1, -1), start=1): + if h <= int(M[dy][col]): + break + else: + visible += 1 + score.append(i) + + for i, dx in enumerate(range(col + 1, C), start=1): + if h <= int(M[row][dx]): + break + else: + visible += 1 + score.append(i) + + for i, dy in enumerate(range(row + 1, R), start=1): + if h <= int(M[dy][col]): + break + else: + visible += 1 + score.append(i) + + for i, dx in enumerate(range(col - 1, -1, -1), start=1): + if h <= int(M[row][dx]): + break + else: + visible += 1 + score.append(i) + + if visible: + p1 += 1 + p2 = max(prod(score), p2) + return p1, p2 + + +if __name__ == "__main__": + with open("./input/08.txt", "r") as f: + inp = f.read().strip() + + p1, p2 = solve(inp) + + print(p1) + print(p2) + + assert p1 == 1812 + assert p2 == 315495