from output import grid, ADJ def solve(data): p1 = 0 p2 = set() G = grid(data, o="@") while True: for r, c in G: if sum((r + dy, c + dx) in G for dy, dx in ADJ) < 4: p2.add((r, c)) if p1 == 0: p1 = len(p2) if not G & p2: break G = G - p2 p2 = len(p2) return p1, p2 if __name__ == "__main__": with open("./input/04.txt", "r") as f: inp = f.read().strip() p1, p2 = solve(inp) print(p1) print(p2) assert p1 == 1493 assert p2 == 9194