|
|
|
|
@ -4,26 +4,50 @@ import sys |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Day8(unittest.TestCase): |
|
|
|
|
inputfile = os.path.join(os.path.dirname(__file__), "input/day8_input") |
|
|
|
|
imgsize = 25 * 6 |
|
|
|
|
|
|
|
|
|
def test_day8a(self): |
|
|
|
|
size = 25 * 6 |
|
|
|
|
with open(self.inputfile) as fp: |
|
|
|
|
def get_image(self): |
|
|
|
|
inputfile = os.path.join(os.path.dirname(__file__), "input/day8_input") |
|
|
|
|
with open(inputfile) as fp: |
|
|
|
|
img = [int(k) for k in str(fp.readline())] |
|
|
|
|
breaks = [size*k for k in range(len(img)//size+1)] |
|
|
|
|
|
|
|
|
|
layers = [img[b:e] for b, e in zip(breaks, breaks[1:])] |
|
|
|
|
|
|
|
|
|
breaks = [self.imgsize*k for k in range(len(img)//self.imgsize+1)] |
|
|
|
|
|
|
|
|
|
return [img[b:e] for b, e in zip(breaks, breaks[1:])] |
|
|
|
|
|
|
|
|
|
def test_day8a(self): |
|
|
|
|
layers = self.get_image() |
|
|
|
|
|
|
|
|
|
min = sys.maxsize |
|
|
|
|
layer = 0 |
|
|
|
|
for i, l in enumerate(layers): |
|
|
|
|
z = l.count(0) |
|
|
|
|
if z < min: |
|
|
|
|
min = z |
|
|
|
|
layer = i |
|
|
|
|
|
|
|
|
|
print("Result was {} on layer {}".format(layers[layer].count(1)*layers[layer].count(2), layer)) |
|
|
|
|
min = z |
|
|
|
|
layer = i |
|
|
|
|
solution = layers[layer].count(1)*layers[layer].count(2) |
|
|
|
|
self.assertEqual(solution, 2806) |
|
|
|
|
|
|
|
|
|
def test_day8b(self): |
|
|
|
|
layers = self.get_image() |
|
|
|
|
result = [2 for i in range(self.imgsize)] |
|
|
|
|
|
|
|
|
|
for pos in range(self.imgsize): |
|
|
|
|
for l in layers: |
|
|
|
|
result[pos] = l[pos] if result[pos] == 2 else result[pos] |
|
|
|
|
|
|
|
|
|
result = ['#' if x == 0 else '.' if x == 1 else ' ' for x in result] |
|
|
|
|
for k in range(len(result)): |
|
|
|
|
# print(result[k], end='') |
|
|
|
|
if (k+1) % 25 == 0: |
|
|
|
|
# print('') |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
Day8().test_day8a() |
|
|
|
|
expected = """\ |
|
|
|
|
....#...####..##..##...##\ |
|
|
|
|
###.#.##.####.#.##.#.##.#\ |
|
|
|
|
##.##...#####.#.##.#...##\ |
|
|
|
|
#.###.##.####.#....#.##.#\ |
|
|
|
|
.####.##.#.##.#.##.#.##.#\ |
|
|
|
|
....#...###..##.##.#...##\ |
|
|
|
|
""" |
|
|
|
|
self.assertEqual("".join(result), expected) |
|
|
|
|
|