summaryrefslogtreecommitdiff
path: root/25_2021.py
blob: ea33166ecbc48edf1a5b25b51784c7e3119258b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import itertools

with open("day25data.txt", "r") as f:
    grid = [line.strip() for line in f]

h, w = len(grid), len(grid[0])
d = {(i, j): c for i, row in enumerate(grid) for j, c in enumerate(row) if c != "."}

for t in itertools.count(1):
    d1 = {
        p if c == ">" and (p := (i, (j + 1) % w)) not in d else (i, j): c
        for (i, j), c in d.items()
    }
    d1 = {
        p if c == "v" and (p := ((i + 1) % h, j)) not in d1 else (i, j): c
        for (i, j), c in d1.items()
    }
    if d1 == d:
        print(t)
        break
    d = d1