#!/usr/bin/env python with open('day23.txt') as data: program = [tuple(line.strip().replace(',', '').split()) for line in data] def execute_program(insts, a_reg = 0): registers = { 'a': a_reg, 'b': 0, 'pc': 0 } def exec_inst(inst): match inst: case 'hlf', reg: registers[reg] /= 2 registers['pc'] += 1 case 'tpl', reg: registers[reg] *= 3 registers['pc'] += 1 case 'inc', reg: registers[reg] += 1 registers['pc'] += 1 case 'jmp', offset: registers['pc'] += int(offset) case 'jie', reg, offset: if registers[reg] % 2 == 0: registers['pc'] += int(offset) else: registers['pc'] += 1 case 'jio', reg, offset: if registers[reg] == 1: registers['pc'] += int(offset) else: registers['pc'] += 1 while True: exec_inst(insts[registers['pc']]) if registers['pc'] >= len(insts): print(registers['b']) break # part 1 execute_program(program, 0) # part 2 execute_program(program, 1)