Browse Source

Day 23

master
Chris Smith 8 years ago
parent
commit
c35fbc004f
2 changed files with 71 additions and 0 deletions
  1. 25
    0
      23.py
  2. 46
    0
      23.txt

+ 25
- 0
23.py View File

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

+ 46
- 0
23.txt View File

@@ -0,0 +1,46 @@
1
+jio a, +16
2
+inc a
3
+inc a
4
+tpl a
5
+tpl a
6
+tpl a
7
+inc a
8
+inc a
9
+tpl a
10
+inc a
11
+inc a
12
+tpl a
13
+tpl a
14
+tpl a
15
+inc a
16
+jmp +23
17
+tpl a
18
+inc a
19
+inc a
20
+tpl a
21
+inc a
22
+inc a
23
+tpl a
24
+tpl a
25
+inc a
26
+inc a
27
+tpl a
28
+inc a
29
+tpl a
30
+inc a
31
+tpl a
32
+inc a
33
+inc a
34
+tpl a
35
+inc a
36
+tpl a
37
+tpl a
38
+inc a
39
+jio a, +8
40
+inc b
41
+jie a, +4
42
+tpl a
43
+inc a
44
+jmp +2
45
+hlf a
46
+jmp -7

Loading…
Cancel
Save