Files
aocpy/2019/d8.py
2024-08-08 22:20:58 -04:00

71 lines
1.5 KiB
Python

from lib import get_data
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
assert min_zero_layer is not None
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()