import shared import matrix from pprint import pprint import numpy as np import operator OPS = { 'AND': operator.and_, 'OR': operator.or_, 'LSHIFT': operator.lshift, 'RSHIFT': operator.rshift, } def NOT(x): return int(x) ^ 65535 def pt1(inp): print(inp) registers = {} for i in inp: inst, dest = i.split(" -> ") if " " not in inst: registers[dest] = inst continue inst = inst.split() if inst[0] == "NOT": registers[dest] = NOT(registers[inst[1]]) continue a,op,b = inst try: a = int(a) except ValueError: a = int(registers[a]) try: b = int(b) except ValueError: b = int(registers[b]) print(a,b) registers[dest] = OPS[op](a,b) #x,op,y = inst.split(" ") pprint(registers) def main(): with open(shared.get_fname(7), "r") as f: inp = [x.rstrip() for x in f.readlines()] pt1(inp) #pt2(inp) if __name__ == "__main__": main()