32 lines
577 B
Python
32 lines
577 B
Python
|
|
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
|