Advent of code 2015 solutions https://adventofcode.com/2015/
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

12345678910111213141516171819202122232425
  1. import re
  2. def set_register(r, v):
  3. global registers
  4. registers[r] = v
  5. registers = {'a': 1, 'b': 0, 'pc': 0}
  6. program = [re.split(',? ', line) for line in open('23.txt', 'r').read().splitlines()]
  7. instructions = {
  8. 'hlf': lambda args: set_register(args[0], registers[args[0]] / 2),
  9. 'tpl': lambda args: set_register(args[0], registers[args[0]] * 3),
  10. 'inc': lambda args: set_register(args[0], registers[args[0]] + 1),
  11. 'jmp': lambda args: set_register('pc', registers['pc'] + (int(args[0]) - 1)),
  12. 'jie': lambda args: set_register('pc', registers['pc'] + (int(args[1]) - 1 if registers[args[0]] % 2 == 0 else 0)),
  13. 'jio': lambda args: set_register('pc', registers['pc'] + (int(args[1]) - 1 if registers[args[0]] == 1 else 0))
  14. }
  15. try:
  16. while True:
  17. line = program[registers['pc']]
  18. instructions[line[0]](line[1:])
  19. registers['pc'] += 1
  20. except LookupError:
  21. print(registers['b'])