Day 12 - Advent of Code 2016
Working solutions for the day 12 puzzles.
Part One
""" day_12_01.py """
# usage: python3 day_12_01.py < input
registers = {'a': 0, 'b': 0, 'c': 0, 'd': 0}
code = []
while True:
try:
operation, *atoms = input().split()
code.append((operation, atoms))
except EOFError:
break
counter = 0
while counter < len(code):
operation, atoms = code[counter]
match operation:
case 'inc':
registers[atoms[0]] += 1
case 'dec':
registers[atoms[0]] -= 1
case 'cpy':
try:
registers[atoms[1]] = int(atoms[0])
except ValueError:
registers[atoms[1]] = registers[atoms[0]]
case 'jnz':
try:
if registers[atoms[0]] > 0:
counter += int(atoms[1]) - 1
except KeyError:
if int(atoms[0]) > 0:
counter += int(atoms[1]) - 1
counter += 1
print(registers['a'])
Part Two
""" day_12_02.py """
# usage: python3 day_12_02.py < input
registers = {'a': 0, 'b': 0, 'c': 1, 'd': 0}
code = []
while True:
try:
operation, *atoms = input().split()
code.append((operation, atoms))
except EOFError:
break
counter = 0
while counter < len(code):
operation, atoms = code[counter]
match operation:
case 'inc':
registers[atoms[0]] += 1
case 'dec':
registers[atoms[0]] -= 1
case 'cpy':
try:
registers[atoms[1]] = int(atoms[0])
except ValueError:
registers[atoms[1]] = registers[atoms[0]]
case 'jnz':
try:
if registers[atoms[0]] > 0:
counter += int(atoms[1]) - 1
except KeyError:
if int(atoms[0]) > 0:
counter += int(atoms[1]) - 1
counter += 1
print(registers['a'])