123456789101112131415161718192021222324252627282930313233 |
- #!/usr/bin/python3
-
- with open('12.txt', 'r') as file:
- instr = list(map(str.split, map(str.strip, file.readlines())))
-
- def value(x):
- try:
- return int(x)
- except ValueError:
- return registers[x]
-
- def cpy(args): registers[args[1]] = value(args[0])
- def inc(args): registers[args[0]] += 1
- def dec(args): registers[args[0]] -= 1
- def jnz(args): global pc; pc += (0 if value(args[0]) == 0 else value(args[1]) - 1)
-
- def run():
- global pc
- while pc < len(instr):
- globals()[instr[pc][0]](instr[pc][1:])
- pc += 1
-
- registers = {'a': 0, 'b': 0, 'c': 0, 'd': 0}
- pc = 0
- run()
-
- print("Stage 1: %s" % registers['a'])
-
- registers = {'a': 0, 'b': 0, 'c': 1, 'd': 0}
- pc = 0
- run()
-
- print("Stage 2: %s" % registers['a'])
|