Solved day8b

master
Arne Wischer 6 years ago
parent 78efc75506
commit 5fc1676776
  1. 2
      advent.py
  2. 2
      days/__init__.py
  3. 52
      days/day8.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

@ -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

@ -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)

Loading…
Cancel
Save