diff --git a/advent.py b/advent.py index 4e864d7..4af3b8c 100644 --- a/advent.py +++ b/advent.py @@ -18,6 +18,8 @@ def suite(): suite.addTest(Day6('test_day6b')) suite.addTest(Day7('test_day7a')) suite.addTest(Day7('test_day7b')) + suite.addTest(Day8('test_day8a')) + suite.addTest(Day8('test_day8b')) return suite diff --git a/days/__init__.py b/days/__init__.py index 3645488..16cb65f 100644 --- a/days/__init__.py +++ b/days/__init__.py @@ -5,4 +5,4 @@ from .day4 import Day4 from .day5 import Day5 from .day6 import Day6 from .day7 import Day7 -from .comp import OpcodeComputer +from .day8 import Day8 diff --git a/days/day8.py b/days/day8.py index 8633d58..2d2beed 100644 --- a/days/day8.py +++ b/days/day8.py @@ -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)