Solve 2022 day 8 pt 1-2
This commit is contained in:
parent
90d5ab203d
commit
179203f7be
1 changed files with 60 additions and 0 deletions
60
2022-python/output/day_08.py
Normal file
60
2022-python/output/day_08.py
Normal 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
|
||||
Loading…
Add table
Reference in a new issue