|
@@ -0,0 +1,33 @@
|
|
1
|
+#!/usr/bin/python3
|
|
2
|
+
|
|
3
|
+with open('12.txt', 'r') as file:
|
|
4
|
+ instr = list(map(str.split, map(str.strip, file.readlines())))
|
|
5
|
+
|
|
6
|
+def value(x):
|
|
7
|
+ try:
|
|
8
|
+ return int(x)
|
|
9
|
+ except ValueError:
|
|
10
|
+ return registers[x]
|
|
11
|
+
|
|
12
|
+def cpy(args): registers[args[1]] = value(args[0])
|
|
13
|
+def inc(args): registers[args[0]] += 1
|
|
14
|
+def dec(args): registers[args[0]] -= 1
|
|
15
|
+def jnz(args): global pc; pc += (0 if value(args[0]) == 0 else value(args[1]) - 1)
|
|
16
|
+
|
|
17
|
+def run():
|
|
18
|
+ global pc
|
|
19
|
+ while pc < len(instr):
|
|
20
|
+ globals()[instr[pc][0]](instr[pc][1:])
|
|
21
|
+ pc += 1
|
|
22
|
+
|
|
23
|
+registers = {'a': 0, 'b': 0, 'c': 0, 'd': 0}
|
|
24
|
+pc = 0
|
|
25
|
+run()
|
|
26
|
+
|
|
27
|
+print("Stage 1: %s" % registers['a'])
|
|
28
|
+
|
|
29
|
+registers = {'a': 0, 'b': 0, 'c': 1, 'd': 0}
|
|
30
|
+pc = 0
|
|
31
|
+run()
|
|
32
|
+
|
|
33
|
+print("Stage 2: %s" % registers['a'])
|