Roderic Day 3 лет назад
Родитель
Сommit
5bedbc3664
1 измененных файлов: 23 добавлений и 0 удалений
  1. +23
    -0
      y2021/p09.py

+ 23
- 0
y2021/p09.py Просмотреть файл

@@ -0,0 +1,23 @@
from toolkit import read_image


ans1 = 0
grid = read_image(text)[0]
for p, v in grid.items():
if all(grid[p + s] > v for s in [1, -1, 1j, -1j] if p + s in grid):
ans1 += int(v) + 1


valid = {k for k, v in grid.items() if v != '9'}
pending = valid.copy()
basin_sizes = []
while pending:
edge = {pending.pop()}
seen = edge.copy()
while edge:
edge = {p + s for p in edge for s in [1, -1, 1j, -1j]} & valid - seen
seen |= edge
pending -= seen
basin_sizes.append(len(seen))
*_, x, y, z = sorted(basin_sizes)
ans2 = x * y * z

Загрузка…
Отмена
Сохранить