from lib import get_data from lib import Grid2D data = get_data(__file__) g = Grid2D(data) seen = set() for i in range(10**9): if g.hash() in seen: print(i) break seen.add(g.hash()) blocked = set(g.find(">v")) for p in g.find(">"): np = (p[0], (p[1] + 1) % g.n_cols) if np in blocked: continue g[p] = "." g[np] = ">" blocked = set(g.find(">v")) for p in g.find("v"): np = ((p[0] + 1) % g.n_rows , p[1]) if np in blocked: continue g[p] = "." g[np] = "v"