Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

24 lines
570B

  1. from toolkit import read_image
  2. ans1 = 0
  3. grid = read_image(text)[0]
  4. for p, v in grid.items():
  5. if all(grid[p + s] > v for s in [1, -1, 1j, -1j] if p + s in grid):
  6. ans1 += int(v) + 1
  7. valid = {k for k, v in grid.items() if v != '9'}
  8. pending = valid.copy()
  9. basin_sizes = []
  10. while pending:
  11. edge = {pending.pop()}
  12. seen = edge.copy()
  13. while edge:
  14. edge = {p + s for p in edge for s in [1, -1, 1j, -1j]} & valid - seen
  15. seen |= edge
  16. pending -= seen
  17. basin_sizes.append(len(seen))
  18. *_, x, y, z = sorted(basin_sizes)
  19. ans2 = x * y * z