Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

pirms 1 gada
123456789101112131415161718192021222324252627
  1. text = open(0).read()
  2. graph = {
  3. complex(x, y): val
  4. for y, row in enumerate(text.splitlines())
  5. for x, val in enumerate(row)
  6. }
  7. width = max(int(p.real) for p in graph) + 1
  8. height = max(int(p.imag) for p in graph) + 1
  9. wrap = lambda p: complex(p.real % width, p.imag % height)
  10. start, = (k for k, v in graph.items() if v == 'S')
  11. state = {(False, start)}
  12. seen = state.copy()
  13. for step in range(100):
  14. state = {
  15. (not age, p + s)
  16. for age, p in state
  17. for s in [1, -1, 1j, -1j]
  18. if graph[wrap(p + s)] in {'.', 'S'}
  19. if (not age, p + s) not in seen
  20. }
  21. seen |= state
  22. if step == 64:
  23. ans1 = sum(not age for age, pos in seen if pos in graph)
  24. print(ans1)