Explorar el Código

🇵📝

master
Roderic Day hace 2 años
padre
commit
f637b2978c
Se han modificado 1 ficheros con 33 adiciones y 0 borrados
  1. +33
    -0
      y2022/p08.py

+ 33
- 0
y2022/p08.py Ver fichero

@@ -0,0 +1,33 @@
from itertools import count, takewhile



def heights(t, dt):
return takewhile(lambda h: h is not None, (grid.get(t + dt * i) for i in count(1)))


def is_visible(t):
return any(grid[t] > max(heights(t, dt), default=-1) for dt in udlr)


def score(t):
score = 1
for dt in udlr:
count = 0
for h in heights(t, dt):
count += 1
if h >= grid[t]:
break
score *= count
return score


udlr = [-1j, 1j, -1, 1]
text = open(0).read()
grid = {complex(x, y): int(v) for y, line in enumerate(text.splitlines(), 1) for x, v in enumerate(line, 1)}

ans1 = sum(is_visible(t) for t in grid)
print(ans1)

ans2 = max(score(t) for t in grid)
print(ans2)

Cargando…
Cancelar
Guardar