Day 11
This commit is contained in:
10
day11/input.txt
Normal file
10
day11/input.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
6636827465
|
||||||
|
6774248431
|
||||||
|
4227386366
|
||||||
|
7447452613
|
||||||
|
6223122545
|
||||||
|
2814388766
|
||||||
|
6615551144
|
||||||
|
4836235836
|
||||||
|
5334783256
|
||||||
|
4128344843
|
||||||
24
day11/part1.py
Normal file
24
day11/part1.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
from scipy.signal import convolve2d
|
||||||
|
|
||||||
|
arr = np.array([[int(n) for n in line.strip()] for line in open("input.txt")])
|
||||||
|
flashes = 0
|
||||||
|
|
||||||
|
for step in range(100):
|
||||||
|
arr = arr + 1
|
||||||
|
next_arr = arr
|
||||||
|
mask = np.zeros_like(arr)
|
||||||
|
changes = 0
|
||||||
|
while True:
|
||||||
|
mask[next_arr >= 10] = 1
|
||||||
|
next_arr = arr + convolve2d(mask, np.array([[1, 1, 1], [1, 0, 1], [1, 1, 1]]), boundary='fill', mode='same')
|
||||||
|
if changes == (changes := np.sum(mask)):
|
||||||
|
arr = next_arr
|
||||||
|
arr[arr >= 10] = 0
|
||||||
|
flashes += np.sum(mask)
|
||||||
|
break
|
||||||
|
|
||||||
|
print(flashes)
|
||||||
|
|
||||||
24
day11/part2.py
Normal file
24
day11/part2.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
from functools import reduce
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
from scipy.signal import convolve2d
|
||||||
|
|
||||||
|
arr = np.array([[int(n) for n in line.strip()] for line in open("input.txt")])
|
||||||
|
|
||||||
|
for step in range(1000):
|
||||||
|
arr = arr + 1
|
||||||
|
next_arr = arr
|
||||||
|
mask = np.zeros_like(arr)
|
||||||
|
changes = 0
|
||||||
|
while True:
|
||||||
|
mask[next_arr >= 10] = 1
|
||||||
|
next_arr = arr + convolve2d(mask, np.array([[1, 1, 1], [1, 0, 1], [1, 1, 1]]), boundary='fill', mode='same')
|
||||||
|
if changes == (changes := np.sum(mask)):
|
||||||
|
arr = next_arr
|
||||||
|
arr[arr >= 10] = 0
|
||||||
|
if np.sum(mask) == reduce(lambda a, b: a*b, arr.shape):
|
||||||
|
print(step + 1)
|
||||||
|
exit(0)
|
||||||
|
break
|
||||||
|
|
||||||
Reference in New Issue
Block a user