adventofcode2019/8/8.py
2019-12-08 13:44:49 +00:00

82 lines
No EOL
1.6 KiB
Python
Executable file

#!/usr/bin/env python3
import sys, os
if len(sys.argv) < 3:
print(sys.argv[0], "width", "height")
exit()
width = int(sys.argv[1])
height = int(sys.argv[2])
for line in sys.stdin:
pixels = line.rstrip()
layer = 0
x = 0
y = 0
layers = []
counts = []
row = []
layer = []
zeroes = 0
ones = 0
twos = 0
# build layers.
for i in range(0, len(pixels)):
pixel = int(pixels[i])
if pixel == 0:
zeroes += 1
elif pixel == 1:
ones += 1
elif pixel == 2:
twos += 1
row.append(pixel)
x += 1
# Assemble layer
if x == width:
x = 0
y += 1
layer.append(row)
row = []
# Add layer, stats and reset counts
if y == height:
y = 0
layers.append(layer)
counts.append((zeroes, ones, twos))
layer = []
zeroes = 0
ones = 0
twos = 0
# return part 1 answer
fewest = None
wanted = 0
for layer in counts:
if fewest is None or layer[0] < fewest:
wanted = layer[1] * layer[2]
fewest = layer[0]
print(wanted)
# render part 2 answer
for y in range(0,height):
row = ""
for x in range(0, width):
p = 2
for l in range(0, len(layers)):
if p == 2:
p = layers[l][y][x]
if p == 0:
row = row + " "
else:
row = row + "*"
print(row)