57 lines
1.4 KiB
Python
Executable File
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))
|