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