from lib import get_data, Grid2D data = get_data(__file__) g = Grid2D(data) r = 0 adjs = [] for pos in g.all_coords(): if g[pos] != "@": continue nr_of_rolls_adj = len([nb for nb in g.neighbors_adj(pos) if g[nb] == "@"]) if nr_of_rolls_adj < 4: r += 1 adjs.append(pos) print(r) r = 0 while True: adjs = [] for pos in g.all_coords(): if g[pos] != "@": continue nr_of_rolls_adj = len([nb for nb in g.neighbors_adj(pos) if g[nb] == "@"]) if nr_of_rolls_adj < 4: adjs.append(pos) if adjs: r += len(adjs) for a in adjs: g[a] = "." else: break print(r)