12345678910111213141516171819202122232425 |
- import re
-
-
- def set_register(r, v):
- global registers
- registers[r] = v
-
- registers = {'a': 1, 'b': 0, 'pc': 0}
- program = [re.split(',? ', line) for line in open('23.txt', 'r').read().splitlines()]
- instructions = {
- 'hlf': lambda args: set_register(args[0], registers[args[0]] / 2),
- 'tpl': lambda args: set_register(args[0], registers[args[0]] * 3),
- 'inc': lambda args: set_register(args[0], registers[args[0]] + 1),
- 'jmp': lambda args: set_register('pc', registers['pc'] + (int(args[0]) - 1)),
- 'jie': lambda args: set_register('pc', registers['pc'] + (int(args[1]) - 1 if registers[args[0]] % 2 == 0 else 0)),
- 'jio': lambda args: set_register('pc', registers['pc'] + (int(args[1]) - 1 if registers[args[0]] == 1 else 0))
- }
-
- try:
- while True:
- line = program[registers['pc']]
- instructions[line[0]](line[1:])
- registers['pc'] += 1
- except LookupError:
- print(registers['b'])
|