import unittest import os import sys class Day8(unittest.TestCase): imgsize = 25 * 6 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 = [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 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 expected = """\ ....#...####..##..##...##\ ###.#.##.####.#.##.#.##.#\ ##.##...#####.#.##.#...##\ #.###.##.####.#....#.##.#\ .####.##.#.##.#.##.#.##.#\ ....#...###..##.##.#...##\ """ self.assertEqual("".join(result), expected)