This commit is contained in:
59
day-20/day-20.py
Normal file
59
day-20/day-20.py
Normal file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def enhance(algorithm, in_image, b):
|
||||
out_image = []
|
||||
for i in range(-b, len(in_image) + b):
|
||||
line = ''
|
||||
for j in range(-b, len(in_image[0]) + b):
|
||||
idx = ''
|
||||
for k in range(i - 1, i + 2):
|
||||
for l in range(j - 1, j + 2):
|
||||
if 0 <= k < len(in_image) and \
|
||||
0 <= l < len(in_image[k]) and\
|
||||
'#' == in_image[k][l]:
|
||||
idx += '1'
|
||||
else:
|
||||
idx += '0'
|
||||
|
||||
idx = int(idx, 2)
|
||||
line += algorithm[idx]
|
||||
out_image.append(line)
|
||||
return out_image
|
||||
|
||||
|
||||
def part_1(input):
|
||||
result = 0
|
||||
algorithm = input[0].rstrip()
|
||||
image = []
|
||||
for line in input[2:]:
|
||||
image.append(line.rstrip())
|
||||
image = enhance(algorithm, image, 3)
|
||||
image = enhance(algorithm, image, -1)
|
||||
for line in image:
|
||||
result += line.count('#')
|
||||
|
||||
print("Part 1 result:", result)
|
||||
|
||||
|
||||
def part_2(input):
|
||||
result = 0
|
||||
algorithm = input[0].rstrip()
|
||||
image = []
|
||||
for line in input[2:]:
|
||||
image.append(line.rstrip())
|
||||
for _ in range(25):
|
||||
image = enhance(algorithm, image, 3)
|
||||
image = enhance(algorithm, image, -1)
|
||||
for line in image:
|
||||
result += line.count('#')
|
||||
print("Part 2 result:", result)
|
||||
|
||||
|
||||
input = list()
|
||||
p = Path(__file__).with_name('input.txt')
|
||||
with open(p) as f:
|
||||
input = f.readlines()
|
||||
part_1(input)
|
||||
part_2(input)
|
||||
Reference in New Issue
Block a user