Optimize with help from dubiass
This commit is contained in:
parent
6769882ac0
commit
bf84429f99
35
8/8p1.py
35
8/8p1.py
|
@ -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:
|
||||||
|
|
46
8/8p2.py
46
8/8p2.py
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue