Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

34 lines
786B

  1. import itertools
  2. import toolkit
  3. state = {k: int(v) for k, v in toolkit.read_image(text)[0].items()}
  4. D8 = [dx + dy for dx in [1, 0, -1] for dy in [1j, 0, -1j] if dx + dy]
  5. def flash(k, flashed_this_round):
  6. state[k] = 0
  7. for p in (k + step for step in D8):
  8. if p in state and p not in flashed_this_round:
  9. state[p] += 1
  10. ans1 = 0
  11. for i in itertools.count(1):
  12. for k in state:
  13. state[k] += 1
  14. flashed_this_round = set()
  15. while any(v > 9 for v in state.values()):
  16. for k, v in state.items():
  17. if v > 9:
  18. flash(k, flashed_this_round)
  19. flashed_this_round.add(k)
  20. if i <= 100:
  21. ans1 += len(flashed_this_round)
  22. if len({v for v in state.values()}) == 1:
  23. ans2 = i
  24. break