Solve 2019 day 8

This commit is contained in:
2024-08-08 21:46:57 -04:00
parent 6f71ed1717
commit af4507f785
2 changed files with 71 additions and 1 deletions

69
2019/d8.py Normal file
View File

@@ -0,0 +1,69 @@
from lib import get_data, str_to_ints
def part_1(data):
wide = 25
tall = 6
xs = [int(c) for c in data.strip()]
layers = []
i = 0
while i < len(xs):
if i % (wide * tall) == 0:
layers.append([])
layers[-1].append(xs[i])
i += 1
min_zero_layer = None
min_zeros = 10**9
for layer in layers:
zeros = layer.count(0)
if zeros < min_zeros:
min_zeros = zeros
min_zero_layer = layer
ones = min_zero_layer.count(1)
twos = min_zero_layer.count(2)
print(ones * twos)
def part_2(data):
wide = 25
tall = 6
xs = [int(c) for c in data.strip()]
layers = []
i = 0
while i < len(xs):
if i % (wide * tall) == 0:
layers.append([])
layers[-1].append(xs[i])
i += 1
result = []
for i in range(wide * tall):
current = 2
for layer in layers:
pixel = layer[i]
if current == 2:
current = pixel
result.append(current)
for row in range(tall):
row_str = ""
for col in range(wide):
pixel_idx = row * wide + col
pixel = result[pixel_idx]
if pixel == 0:
row_str += ""
elif pixel == 1:
row_str += ""
else:
assert False
print(row_str)
def main():
data = get_data(__file__)
part_1(data)
part_2(data)
if __name__ == "__main__":
main()