1
0
Fork 0
advent2017/8/8p2.py

57 lines
1.4 KiB
Python
Executable File

#!/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 = {}
big = 0
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))
if registers[reg1] > big:
big = registers[reg1]
elif op == 'dec':
registers[reg1] = (get_value(registers, reg1) - int(val1))
if registers[reg1] > big:
big = registers[reg1]
return big
for puzzle in inputs:
print(puzzle, solve(puzzle))