mirror of
https://github.com/thib8956/advent-of-code.git
synced 2025-08-23 16:01:59 +00:00
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from itertools import zip_longest
|
|
|
|
|
|
def grouper(n, iterable):
|
|
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
|
|
args = [iter(iterable)] * n
|
|
return zip_longest(*args)
|
|
|
|
|
|
def main(inp):
|
|
data = inp.readline().rstrip()
|
|
width, height = 25, 6
|
|
layers = [x for x in grouper(width*height, data)]
|
|
layer_i, _ = min(((i, x.count("0")) for i, x in enumerate(layers)), key=lambda x: x[1])
|
|
ones = layers[layer_i].count("1")
|
|
twos = layers[layer_i].count("2")
|
|
print("Part 1: ", ones * twos)
|
|
|
|
image = ["2"] * width * height
|
|
layers = [x for x in grouper(width*height, data)]
|
|
layer_i, _ = min(((i, x.count("0")) for i, x in enumerate(layers)), key=lambda x: x[1])
|
|
for l in layers[::-1]:
|
|
# 0 is black, 1 is white, and 2 is transparent.
|
|
for i, x in enumerate(l):
|
|
if x == "2":
|
|
continue
|
|
image[i] = x
|
|
|
|
print("Part 2:")
|
|
for i in range(height):
|
|
b, w = " ", "\u2588"
|
|
im = [b if x == "0" else w for x in image[width*i:width*(i+1)]]
|
|
print("".join(im))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import fileinput
|
|
main(fileinput.input())
|
|
|