Parcourir la source

jackson

master
Roderic Day il y a 3 ans
Parent
révision
0070ffd0c3
1 fichiers modifiés avec 24 ajouts et 0 suppressions
  1. +24
    -0
      y2021/p25.py

+ 24
- 0
y2021/p25.py Voir le fichier

@@ -0,0 +1,24 @@
text = open(0).read()
state = {}
for y, row in enumerate(text.splitlines()):
for x, ch in enumerate(row):
state[x, y] = ch
X, Y = x + 1, y + 1

seen = set()
for turn in range(1000):
for ch, dx, dy in [('>', 1, 0), ('v', 0, 1)]:
copy = state.copy()
for old in copy:
if copy[old] == ch:
x, y = old
new = (x + dx) % X, (y + dy) % Y
if copy[new] == '.':
state[old] = '.'
state[new] = ch

hashable = frozenset(state.items())
if hashable in seen:
print(turn)
break
seen.add(hashable)

Chargement…
Annuler
Enregistrer