From bf84429f996abdf62c49dabda82f3ba8cdea7d10 Mon Sep 17 00:00:00 2001 From: Pedro de Oliveira Date: Fri, 8 Dec 2017 21:43:36 +0000 Subject: [PATCH] Optimize with help from dubiass --- 8/8p1.py | 35 +++++++++++++---------------------- 8/8p2.py | 46 +++++++++++++++++++--------------------------- 2 files changed, 32 insertions(+), 49 deletions(-) diff --git a/8/8p1.py b/8/8p1.py index aea7783..fd0e042 100755 --- a/8/8p1.py +++ b/8/8p1.py @@ -15,25 +15,18 @@ def get_value(registers, register): def compare(registers, operation, register, b): result = False a = get_value(registers, register) - b = int(b) - if operation == '>': - if a > b: + if operation == '>' and a > b: result = True - elif operation == '<': - if a < b: + elif operation == '<' and a < b: result = True - elif operation == '>=': - if a >= b: + elif operation == '>=' and a >= b: result = True - elif operation == '<=': - if a <= b: + elif operation == '<=' and a <= b: result = True - elif operation == '!=': - if a != b: + elif operation == '!=' and a != b: result = True - elif operation == '==': - if a == b: + elif operation == '==' and a == b: result = True return result @@ -43,15 +36,13 @@ def solve(filename): registers = {} with open(filename, "r") as fp: - for line in fp: - values = line.split() - if compare(registers, values[5], values[4], values[6]): - if values[1] == 'inc': - registers[values[0]] = (get_value(registers, values[0]) - + int(values[2])) - elif values[1] == 'dec': - registers[values[0]] = (get_value(registers, values[0]) - - int(values[2])) + 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: diff --git a/8/8p2.py b/8/8p2.py index ed44d23..098ae6d 100755 --- a/8/8p2.py +++ b/8/8p2.py @@ -9,31 +9,24 @@ def get_value(registers, register): if register not in registers: registers[register] = 0 - return int(registers[register]) + return registers[register] def compare(registers, operation, register, b): result = False a = get_value(registers, register) - b = int(b) - if operation == '>': - if a > b: + if operation == '>' and a > b: result = True - elif operation == '<': - if a < b: + elif operation == '<' and a < b: result = True - elif operation == '>=': - if a >= b: + elif operation == '>=' and a >= b: result = True - elif operation == '<=': - if a <= b: + elif operation == '<=' and a <= b: result = True - elif operation == '!=': - if a != b: + elif operation == '!=' and a != b: result = True - elif operation == '==': - if a == b: + elif operation == '==' and a == b: result = True return result @@ -42,20 +35,19 @@ def compare(registers, operation, register, b): def solve(filename): registers = {} big = 0 + with open(filename, "r") as fp: - for line in fp: - values = line.split() - if compare(registers, values[5], values[4], values[6]): - if values[1] == 'inc': - registers[values[0]] = (get_value(registers, values[0]) - + int(values[2])) - if registers[values[0]] > big: - big = registers[values[0]] - elif values[1] == 'dec': - registers[values[0]] = (get_value(registers, values[0]) - - int(values[2])) - if registers[values[0]] > big: - big = registers[values[0]] + 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