puzzle18.py (1109B)
1 with open('files/puzzle18.txt') as f: 2 instructions = f.readlines() 3 4 ptr = 0 5 last_played_value = 0 6 registers = {chr(i + 97) : 0 for i in range(26)} 7 8 while ptr >= 0 and ptr < len(instructions): 9 tokens = instructions[ptr].strip().split(" ") 10 11 if tokens[0] == "snd": 12 last_played_value = registers[tokens[1]] 13 if tokens[0] == "rcv" and registers[tokens[1]] > 0: 14 break 15 if tokens[0] == "set": 16 registers[tokens[1]] = int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]] 17 if tokens[0] == "add": 18 registers[tokens[1]] += int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]] 19 if tokens[0] == "mul": 20 registers[tokens[1]] *= int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]] 21 if tokens[0] == "mod": 22 registers[tokens[1]] %= int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]] 23 if tokens[0] == "jgz" and registers[tokens[1]] > 0: 24 ptr += int(tokens[2]) if not str.isalpha(tokens[2]) else registers[tokens[2]] 25 continue 26 ptr += 1 27 28 print last_played_value