소스 검색

vigilantes

master
Roderic Day 3 년 전
부모
커밋
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

Loading…
취소
저장