Day 10

Part 1

  • Read in input file
with open("day10/input.txt") as f:
    input = f.read().splitlines()

First 100 lines of input looks like this:

['addx 2',
 'addx 3',
 'addx 3',
 'addx -2',
 'addx 4',
 'noop',
 'addx 1',
 'addx 4',
 'addx 1',
 'noop',
 'addx 4',
 'addx 1',
 'noop',
 'addx 2',
 'addx 5',
 'addx -28',
 'addx 30',
 'noop',
 'addx 5',
 'addx 1',
 'noop',
 'addx -38',
 'noop',
 'noop',
 'noop',
 'noop',
 'addx 5',
 'addx 5',
 'addx 3',
 'addx 2',
 'addx -2',
 'addx 2',
 'noop',
 'noop',
 'addx -2',
 'addx 12',
 'noop',
 'addx 2',
 'addx 3',
 'noop',
 'addx 2',
 'addx -31',
 'addx 32',
 'addx 7',
 'noop',
 'addx -2',
 'addx -37',
 'addx 1',
 'addx 5',
 'addx 1',
 'noop',
 'addx 31',
 'addx -25',
 'addx -10',
 'addx 13',
 'noop',
 'noop',
 'addx 18',
 'addx -11',
 'addx 3',
 'noop',
 'noop',
 'addx 1',
 'addx 4',
 'addx -32',
 'addx 15',
 'addx 24',
 'addx -2',
 'noop',
 'addx -37',
 'noop',
 'noop',
 'noop',
 'addx 5',
 'addx 5',
 'addx 21',
 'addx -20',
 'noop',
 'addx 6',
 'addx 19',
 'addx -5',
 'addx -8',
 'addx -22',
 'addx 26',
 'addx -22',
 'addx 23',
 'addx 2',
 'noop',
 'noop',
 'noop',
 'addx 8',
 'addx -10',
 'addx -27',
 'addx 33',
 'addx -27',
 'noop',
 'addx 34',
 'addx -33',
 'addx 2',
 'addx 19']
  • Create a generator that returns the totals each time it iterates

  • Finally the answer for the top 1 given the input

strengths = sum_strengths(input)
print(f'the correct answer for part 1 is {strengths}')
the correct answer for part 1 is 14540

Part 2

cpu = CPU(input)
pixels = list(cpu.draw_pixel())
for i in range(0,240,40):
    row = pixels[i:i+40]
    s = "".join(row)
    print(s)

print("EHZFZHCZ")
####.#..#.####.####.####.#..#..##..####.
#....#..#....#.#.......#.#..#.#..#....#.
###..####...#..###....#..####.#......#..
#....#..#..#...#.....#...#..#.#.....#...
#....#..#.#....#....#....#..#.#..#.#....
####.#..#.####.#....####.#..#..##..####.
EHZFZHCZ