Day 11 - UGLY AF
This commit is contained in:
6
day11/common.py
Normal file
6
day11/common.py
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
def char_to_int(char):
|
||||||
|
if char == 'L':
|
||||||
|
return -1
|
||||||
|
if char == '.':
|
||||||
|
return 0
|
||||||
|
return 1
|
||||||
99
day11/input.txt
Normal file
99
day11/input.txt
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LL.LLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLL.L.LLLLLLLLLL.LLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL..LLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LL.LL.LLLLL.L.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.LLL.LL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLLLL.LLLL.L.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
.L.LL...LLLL.......L....L.LLLLLL.......LL....LL...L..L.LLL...LLL..L.L.L.L..L...............L
|
||||||
|
LLLLLLLLLL.LL.LLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL..LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLL.LL.LLL.LLLLLLLLLLLLL.L.LLLLLLL.LLLLL.LLLLLLL.LLLLLL..LLLLLL.LLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
.......L.LLL........LL.L....L.LL...L.....L..LL......L.....L....L.LLLL...L....L..L.L........L
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLL.L.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LL.LLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
|
||||||
|
..L...L.........LL.LLLL...L...LL.L.L..L...L.L...LL..LL...L....L....LL.L...LLL........LLL....
|
||||||
|
LLLLLLLL.L.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLL.LL.LLLLLLLLLLL.LLLLLL.LLLLLL.LL.LLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LL.LLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
|
||||||
|
L..L...........L....L.LLLL........L..LL....L.L.......L.L.L.....LL......L.....LLL.LL.L.L.LL.L
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLL..LLLLLL.LLLLLLLLLLL.LLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLL.LLL.LLLLL.LLLLLL..LLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
..L.....LLL.L..L...L......LL......L.......LL..L.L.L.L....LLLL....L....L...LL...LLL.L....LLL.
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLL.LLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LL.LL.L.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLL.LL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.L.LLLLLLLLLL..LLLL
|
||||||
|
LLLLL.LLLLLLLL.LLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLL..LLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LL.LLL.LLLLLLLLLLL
|
||||||
|
.....LL.L...LL....L...L.L.....L...L.L.L.L.L.L.......LL.....L.LL.LL...LLL.L.....L...L......L.
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LL..LLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLL.LL.LLLLLLLLLLLLL.LLLLLLLLLL.
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLL.L.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.L.LLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.L
|
||||||
|
.L....LL....L....L.L....L......LL.....L..L.L....LL.......L......L.L..L.......L....L.LLL....L
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLL..LLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
.L......L....L.L..L....LL.......L.LL..LL.L.....L..L.L...............LL....L...L....L....L.LL
|
||||||
|
LLLLLLLLL..LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL..LLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL..LLLLLL.LLLLL.LLLLLLLLLLLL.L.LLLLLL..LLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
.L..L..L.L.L.L.L.L.....L.L...L....LL.L.L....L..L.L.L........L....LL.......LL....L...L.L..LL.
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL..LLLLL.LLLLLL.LLLLL..LLLLLL.LLLLLLLLLLL
|
||||||
|
L.LLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL.L.LLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLL..LLLLL.LLLLLLLLLLLLL.LLLLL.L.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL..LLLLLLLLLL
|
||||||
|
LLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL..LLLLL.LLLLLLLLLL.LLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLL.L.L.LLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLL
|
||||||
|
LLLLL....L.LL..LLL.L...LL.....L............L...............L..L.LLLLL.L.L.......L..LL.L...L.
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLL..LLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLL.LL.LLLLLL..LLLLL.LLLLLL.L.LLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.L.LLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLL
|
||||||
|
.....L...L......L...LL.L.......LL.L...LL..LL.....L.......LL.LL......LL.L...L..L..L...L.LLL..
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL..LLLLLLLLLL
|
||||||
|
LLLLLL.LLL.LLLLLL.LLLLLL.LL.LL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLL.LLL.LL..LLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.
|
||||||
|
LLLLLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.L.LLLLLLLLLL.LLLL.LL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLL.L.L.LLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
.LL.LLL.L.L.L..L....L..L...L......L......L.L.L...L.L..L.L.LLLLL..L.LL.LLL.L...LL.LL...L.L.L.
|
||||||
|
LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLL.LLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLL..LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLL.LLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
..L.LLLL.L...LL.L....L..LL..L.....L....L.L...LL.......L.L..LL..LL............L...LL.....L...
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLL.LLL.LLLLLL..LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLL..LLLLL.
|
||||||
|
LLLLLLLLLL.LLLLLL..LLLLL.LLLLL.LLLLLLL..LLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL.L.LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLL.L.LLLLLLLLLLLLL.LL.LLLLL.LLLL.LLLLLL.LLLLLLLLLL.LLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLL..LLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLL
|
||||||
|
LLLLLLLLLL.LLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLL..LLLLLLL.LLLLL..LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL
|
||||||
|
LLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LL.LLLLLLLLLL.LLLLLLLLLLL
|
||||||
52
day11/part1.py
Normal file
52
day11/part1.py
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
import numpy as np
|
||||||
|
from numpy.lib.stride_tricks import as_strided
|
||||||
|
|
||||||
|
from day11.common import char_to_int
|
||||||
|
|
||||||
|
|
||||||
|
def get_filters(arr):
|
||||||
|
KERNEL_SHAPE = (3, 3)
|
||||||
|
return as_strided(
|
||||||
|
arr,
|
||||||
|
shape=(
|
||||||
|
arr.shape[0] - KERNEL_SHAPE[0] + 1, # The feature map is a few pixels smaller than the input
|
||||||
|
arr.shape[1] - KERNEL_SHAPE[1] + 1,
|
||||||
|
KERNEL_SHAPE[0],
|
||||||
|
KERNEL_SHAPE[1],
|
||||||
|
),
|
||||||
|
strides=(
|
||||||
|
arr.strides[0],
|
||||||
|
arr.strides[1],
|
||||||
|
arr.strides[0], # When we move one step in the 3rd dimension, we should move one step in the original data too
|
||||||
|
arr.strides[1],
|
||||||
|
),
|
||||||
|
writeable=False, # totally use this to avoid writing to memory in weird places
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def parse(arr):
|
||||||
|
if arr[1, 1] == 0:
|
||||||
|
return 0
|
||||||
|
if np.count_nonzero(arr == 1) == 0:
|
||||||
|
return 1
|
||||||
|
if arr[1, 1] == 1 and np.count_nonzero(arr == 1) >= 5:
|
||||||
|
return -1
|
||||||
|
return arr[1, 1]
|
||||||
|
|
||||||
|
|
||||||
|
lines = np.array([[char_to_int(x) for x in line.strip()] for line in open("input.txt")], dtype=np.byte)
|
||||||
|
lines = np.pad(lines, 1, 'constant', constant_values=0)
|
||||||
|
shape = np.array(lines.shape)
|
||||||
|
last = -1
|
||||||
|
while True:
|
||||||
|
curr = np.count_nonzero(lines == 1)
|
||||||
|
if curr == last:
|
||||||
|
print(last)
|
||||||
|
break
|
||||||
|
last = curr
|
||||||
|
expanded_input = get_filters(lines)
|
||||||
|
new_input = np.zeros(shape, dtype=np.byte)
|
||||||
|
for idx in np.ndindex(*shape-2):
|
||||||
|
target = tuple(np.array(idx) + 1)
|
||||||
|
new_input[target] = parse(expanded_input[idx])
|
||||||
|
lines = new_input
|
||||||
50
day11/part2.py
Normal file
50
day11/part2.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import numpy as np
|
||||||
|
from day11.common import char_to_int
|
||||||
|
|
||||||
|
lines = np.array([[char_to_int(x) for x in line.strip()] for line in open("input.txt")], dtype=np.byte)
|
||||||
|
shape = lines.shape
|
||||||
|
|
||||||
|
RAYS = [(-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), (-1, 1), (0, 1), (1, 1)]
|
||||||
|
|
||||||
|
last = -1
|
||||||
|
while True:
|
||||||
|
curr = np.count_nonzero(lines == 1)
|
||||||
|
if curr == last:
|
||||||
|
print(last)
|
||||||
|
break
|
||||||
|
last = curr
|
||||||
|
|
||||||
|
new = np.zeros_like(lines, dtype=np.byte)
|
||||||
|
for idx, val in np.ndenumerate(lines):
|
||||||
|
if val == 0:
|
||||||
|
continue
|
||||||
|
if val == -1:
|
||||||
|
found = False
|
||||||
|
for ray in RAYS:
|
||||||
|
ray = np.array(ray)
|
||||||
|
pos = np.array(idx) + ray
|
||||||
|
while 0 <= pos[0] < shape[0] and 0 <= pos[1] < shape[1]:
|
||||||
|
if lines[tuple(pos)] == 1:
|
||||||
|
found = True
|
||||||
|
break
|
||||||
|
elif lines[tuple(pos)] == -1:
|
||||||
|
break
|
||||||
|
pos = pos + ray
|
||||||
|
if found:
|
||||||
|
break
|
||||||
|
new[idx] = 1 if not found else -1
|
||||||
|
continue
|
||||||
|
if val == 1:
|
||||||
|
found = 0
|
||||||
|
for ray in RAYS:
|
||||||
|
ray = np.array(ray)
|
||||||
|
pos = np.array(idx) - ray
|
||||||
|
while 0 <= pos[0] < shape[0] and 0 <= pos[1] < shape[1]:
|
||||||
|
if lines[tuple(pos)] == 1:
|
||||||
|
found += 1
|
||||||
|
break
|
||||||
|
elif lines[tuple(pos)] == -1:
|
||||||
|
break
|
||||||
|
pos = pos - ray
|
||||||
|
new[idx] = -1 if found >= 5 else 1
|
||||||
|
lines = new
|
||||||
Reference in New Issue
Block a user