adventofcode

https://adventofcode.com/
Log | Files | Refs

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