Day 11
This commit is contained in:
parent
24886aee85
commit
edb6be7997
49
2021/day11.py
Normal file
49
2021/day11.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
with open("input11.txt") as f:
|
||||
lines = [line.rstrip() for line in f]
|
||||
cells = [list(map(int, line)) for line in lines]
|
||||
dim = len(cells)
|
||||
|
||||
|
||||
def near(x, y):
|
||||
return (
|
||||
(a, b)
|
||||
for a in range(max(0, x - 1), min(x + 2, dim))
|
||||
for b in range(max(0, y - 1), min(y + 2, dim))
|
||||
if (a, b) != (x, y)
|
||||
)
|
||||
|
||||
|
||||
def up(x, y, f):
|
||||
if (x, y) in f:
|
||||
return
|
||||
cells[x][y] += 1
|
||||
if cells[x][y] <= 9:
|
||||
return
|
||||
f.add((x, y))
|
||||
cells[x][y] = 0
|
||||
for nx, ny in near(x, y):
|
||||
up(nx, ny, f)
|
||||
|
||||
|
||||
def step():
|
||||
flashed = set()
|
||||
for x, row in enumerate(cells):
|
||||
for y, cell in enumerate(row):
|
||||
up(x, y, flashed)
|
||||
for fx, fy in flashed:
|
||||
cells[fx][fy] = 0
|
||||
return len(flashed)
|
||||
|
||||
|
||||
# Part 1
|
||||
num_flashes = 0
|
||||
for _ in range(100):
|
||||
num_flashes += step()
|
||||
print(num_flashes)
|
||||
|
||||
# Part 2
|
||||
num_steps = 100
|
||||
while sum(sum(row) for row in cells) != 0:
|
||||
step()
|
||||
num_steps += 1
|
||||
print(num_steps)
|
Loading…
Reference in a new issue