1
0
Fork 0

Optimize with help from dubiass

This commit is contained in:
Pedro de Oliveira 2017-12-08 21:43:36 +00:00
parent 6769882ac0
commit bf84429f99
2 changed files with 32 additions and 49 deletions

View File

@ -15,25 +15,18 @@ def get_value(registers, register):
def compare(registers, operation, register, b): def compare(registers, operation, register, b):
result = False result = False
a = get_value(registers, register) a = get_value(registers, register)
b = int(b)
if operation == '>': if operation == '>' and a > b:
if a > b:
result = True result = True
elif operation == '<': elif operation == '<' and a < b:
if a < b:
result = True result = True
elif operation == '>=': elif operation == '>=' and a >= b:
if a >= b:
result = True result = True
elif operation == '<=': elif operation == '<=' and a <= b:
if a <= b:
result = True result = True
elif operation == '!=': elif operation == '!=' and a != b:
if a != b:
result = True result = True
elif operation == '==': elif operation == '==' and a == b:
if a == b:
result = True result = True
return result return result
@ -43,15 +36,13 @@ def solve(filename):
registers = {} registers = {}
with open(filename, "r") as fp: with open(filename, "r") as fp:
for line in fp: for l in fp:
values = line.split() reg1, op, val1, _, reg2, cond, val2 = l.rstrip().split()
if compare(registers, values[5], values[4], values[6]): if compare(registers, cond, reg2, int(val2)):
if values[1] == 'inc': if op == 'inc':
registers[values[0]] = (get_value(registers, values[0]) registers[reg1] = (get_value(registers, reg1) + int(val1))
+ int(values[2])) elif op == 'dec':
elif values[1] == 'dec': registers[reg1] = (get_value(registers, reg1) - int(val1))
registers[values[0]] = (get_value(registers, values[0])
- int(values[2]))
biggest = 0 biggest = 0
for i in registers: for i in registers:

View File

@ -9,31 +9,24 @@ def get_value(registers, register):
if register not in registers: if register not in registers:
registers[register] = 0 registers[register] = 0
return int(registers[register]) return registers[register]
def compare(registers, operation, register, b): def compare(registers, operation, register, b):
result = False result = False
a = get_value(registers, register) a = get_value(registers, register)
b = int(b)
if operation == '>': if operation == '>' and a > b:
if a > b:
result = True result = True
elif operation == '<': elif operation == '<' and a < b:
if a < b:
result = True result = True
elif operation == '>=': elif operation == '>=' and a >= b:
if a >= b:
result = True result = True
elif operation == '<=': elif operation == '<=' and a <= b:
if a <= b:
result = True result = True
elif operation == '!=': elif operation == '!=' and a != b:
if a != b:
result = True result = True
elif operation == '==': elif operation == '==' and a == b:
if a == b:
result = True result = True
return result return result
@ -42,20 +35,19 @@ def compare(registers, operation, register, b):
def solve(filename): def solve(filename):
registers = {} registers = {}
big = 0 big = 0
with open(filename, "r") as fp: with open(filename, "r") as fp:
for line in fp: for l in fp:
values = line.split() reg1, op, val1, _, reg2, cond, val2 = l.rstrip().split()
if compare(registers, values[5], values[4], values[6]): if compare(registers, cond, reg2, int(val2)):
if values[1] == 'inc': if op == 'inc':
registers[values[0]] = (get_value(registers, values[0]) registers[reg1] = (get_value(registers, reg1) + int(val1))
+ int(values[2])) if registers[reg1] > big:
if registers[values[0]] > big: big = registers[reg1]
big = registers[values[0]] elif op == 'dec':
elif values[1] == 'dec': registers[reg1] = (get_value(registers, reg1) - int(val1))
registers[values[0]] = (get_value(registers, values[0]) if registers[reg1] > big:
- int(values[2])) big = registers[reg1]
if registers[values[0]] > big:
big = registers[values[0]]
return big return big