Solve 2022 day 8 pt 1-2

This commit is contained in:
Anders Englöf Ytterström 2025-11-26 00:38:00 +01:00
parent 90d5ab203d
commit 179203f7be

View file

@ -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