2022/day8/part2.py
2024-12-01 19:53:34 +01:00

58 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python
from common import parse
def scenic_score(forest: list[list[int]], x: int, y: int) -> int:
height = forest[y][x]
sw = se = sn = ss = 0
west = reversed(forest[y][0:x])
for w in west:
if w < height:
sw += 1
continue
elif w == height:
sw += 1
break
east = forest[y][x + 1 :]
for e in east:
if e < height:
se += 1
continue
elif e == height:
se += 1
break
north = reversed([forest[i][x] for i in range(y)])
for n in north:
if n < height:
sn += 1
continue
elif n == height:
sn += 1
break
south = [forest[i][x] for i in range(y + 1, len(forest))]
for s in south:
if s < height:
ss += 1
continue
elif s == height:
ss += 1
break
return sw * se * sn * ss
def solve(input: list[list[int]]) -> int:
maxi = 0
for y, line in enumerate(input):
for x, tree in enumerate(input):
maxi = max(maxi, scenic_score(input, x, y))
return maxi
def main():
print(solve(parse("input")))
if __name__ == "__main__":
main()