commit 56a0de87d78ba38ca498b516bf71d46e4658fb8a
parent 788c5d6058ef3e3242e49f89067a5d2060b4a901
Author: mpizzzle <michael.770211@gmail.com>
Date: Tue, 19 Dec 2017 21:11:02 +0000
puzzle 18 part 1 complete
Diffstat:
3 files changed, 70 insertions(+), 1 deletion(-)
diff --git a/files/puzzle18.txt b/files/puzzle18.txt
@@ -0,0 +1,41 @@
+set i 31
+set a 1
+mul p 17
+jgz p p
+mul a 2
+add i -1
+jgz i -2
+add a -1
+set i 127
+set p 622
+mul p 8505
+mod p a
+mul p 129749
+add p 12345
+mod p a
+set b p
+mod b 10000
+snd b
+add i -1
+jgz i -9
+jgz a 3
+rcv b
+jgz b -1
+set f 0
+set i 126
+rcv a
+rcv b
+set p a
+mul p -1
+add p b
+jgz p 4
+snd a
+set a b
+jgz 1 3
+snd b
+set f 1
+add i -1
+jgz i -11
+snd a
+jgz f -16
+jgz a -19
diff --git a/puzzle17.py b/puzzle17.py
@@ -11,7 +11,7 @@ print spinlock_buffer[ptr + 1]
ptr = 0
-for i in range(1, 50000000):
+for i in range(1, 50000001):
ptr = ((ptr + step) % i) + 1
if ptr == 1:
print i
diff --git a/puzzle18.py b/puzzle18.py
@@ -0,0 +1,28 @@
+with open('files/puzzle18.txt') as f:
+ instructions = f.readlines()
+
+ptr = 0
+last_played_value = 0
+registers = {chr(i + 97) : 0 for i in range(26)}
+
+while ptr >= 0 and ptr < len(instructions):
+ tokens = instructions[ptr].strip().split(" ")
+
+ if tokens[0] == "snd":
+ last_played_value = registers[tokens[1]]
+ if tokens[0] == "rcv" and registers[tokens[1]] > 0:
+ break
+ if tokens[0] == "set":
+ registers[tokens[1]] = int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]]
+ if tokens[0] == "add":
+ registers[tokens[1]] += int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]]
+ if tokens[0] == "mul":
+ registers[tokens[1]] *= int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]]
+ if tokens[0] == "mod":
+ registers[tokens[1]] %= int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]]
+ if tokens[0] == "jgz" and registers[tokens[1]] > 0:
+ ptr += int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]]
+ continue
+ ptr += 1
+
+print last_played_value