#!/usr/bin/env python # -*- coding: utf-8 -*- inputs = ["example.txt", "input.txt"] def get_value(registers, register): if register not in registers: registers[register] = 0 return registers[register] def compare(registers, operation, register, b): result = False a = get_value(registers, register) if operation == '>' and a > b: result = True elif operation == '<' and a < b: result = True elif operation == '>=' and a >= b: result = True elif operation == '<=' and a <= b: result = True elif operation == '!=' and a != b: result = True elif operation == '==' and a == b: result = True return result def solve(filename): registers = {} with open(filename, "r") as fp: for l in fp: reg1, op, val1, _, reg2, cond, val2 = l.rstrip().split() if compare(registers, cond, reg2, int(val2)): if op == 'inc': registers[reg1] = (get_value(registers, reg1) + int(val1)) elif op == 'dec': registers[reg1] = (get_value(registers, reg1) - int(val1)) biggest = 0 for i in registers: if int(registers[i]) > biggest: biggest = int(registers[i]) return biggest for puzzle in inputs: print(puzzle, solve(puzzle))