Add day 8 solutions
This commit is contained in:
parent
e56615e7ee
commit
d222b38512
|
@ -0,0 +1,66 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
inputs = ["example.txt", "input.txt"]
|
||||||
|
#inputs = ["example.txt"]
|
||||||
|
#inputs = ["input.txt"]
|
||||||
|
|
||||||
|
registers = {}
|
||||||
|
|
||||||
|
def get_value(register):
|
||||||
|
if register not in registers:
|
||||||
|
registers[register] = 0
|
||||||
|
return int(registers[register])
|
||||||
|
|
||||||
|
def compare(operation, register, b):
|
||||||
|
result = False
|
||||||
|
|
||||||
|
a = get_value(register)
|
||||||
|
b = int(b)
|
||||||
|
|
||||||
|
if operation == '>':
|
||||||
|
if a > b:
|
||||||
|
result = True
|
||||||
|
elif operation == '<':
|
||||||
|
if a < b:
|
||||||
|
result = True
|
||||||
|
elif operation == '>=':
|
||||||
|
if a >= b:
|
||||||
|
result = True
|
||||||
|
elif operation == '<=':
|
||||||
|
if a <= b:
|
||||||
|
result = True
|
||||||
|
elif operation == '!=':
|
||||||
|
if a != b:
|
||||||
|
result = True
|
||||||
|
elif operation == '==':
|
||||||
|
if a == b:
|
||||||
|
result = True
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def solve(filename):
|
||||||
|
with open(filename, "r") as fp:
|
||||||
|
for line in fp:
|
||||||
|
values = line.split()
|
||||||
|
if compare(values[5], values[4], values[6]):
|
||||||
|
if values[1] == 'inc':
|
||||||
|
registers[values[0]] = get_value(values[0]) + int(values[2])
|
||||||
|
elif values[1] == 'dec':
|
||||||
|
registers[values[0]] = get_value(values[0]) - int(values[2])
|
||||||
|
|
||||||
|
biggest = 0
|
||||||
|
for i in registers:
|
||||||
|
print(i, registers[i])
|
||||||
|
if int(registers[i]) > biggest:
|
||||||
|
biggest = int(registers[i])
|
||||||
|
|
||||||
|
return biggest
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for puzzle in inputs:
|
||||||
|
print(puzzle, solve(puzzle))
|
||||||
|
registers.clear()
|
|
@ -0,0 +1,61 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
inputs = ["example.txt", "input.txt"]
|
||||||
|
registers = {}
|
||||||
|
|
||||||
|
def get_value(register):
|
||||||
|
if register not in registers:
|
||||||
|
registers[register] = 0
|
||||||
|
return int(registers[register])
|
||||||
|
|
||||||
|
def compare(operation, register, b):
|
||||||
|
result = False
|
||||||
|
|
||||||
|
a = get_value(register)
|
||||||
|
b = int(b)
|
||||||
|
|
||||||
|
if operation == '>':
|
||||||
|
if a > b:
|
||||||
|
result = True
|
||||||
|
elif operation == '<':
|
||||||
|
if a < b:
|
||||||
|
result = True
|
||||||
|
elif operation == '>=':
|
||||||
|
if a >= b:
|
||||||
|
result = True
|
||||||
|
elif operation == '<=':
|
||||||
|
if a <= b:
|
||||||
|
result = True
|
||||||
|
elif operation == '!=':
|
||||||
|
if a != b:
|
||||||
|
result = True
|
||||||
|
elif operation == '==':
|
||||||
|
if a == b:
|
||||||
|
result = True
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def solve(filename):
|
||||||
|
big = 0
|
||||||
|
with open(filename, "r") as fp:
|
||||||
|
for line in fp:
|
||||||
|
values = line.split()
|
||||||
|
if compare(values[5], values[4], values[6]):
|
||||||
|
if values[1] == 'inc':
|
||||||
|
registers[values[0]] = get_value(values[0]) + int(values[2])
|
||||||
|
if registers[values[0]] > big:
|
||||||
|
big = registers[values[0]]
|
||||||
|
elif values[1] == 'dec':
|
||||||
|
registers[values[0]] = get_value(values[0]) - int(values[2])
|
||||||
|
if registers[values[0]] > big:
|
||||||
|
big = registers[values[0]]
|
||||||
|
|
||||||
|
return big
|
||||||
|
|
||||||
|
|
||||||
|
for puzzle in inputs:
|
||||||
|
print(puzzle, solve(puzzle))
|
||||||
|
registers.clear()
|
|
@ -0,0 +1,4 @@
|
||||||
|
b inc 5 if a > 1
|
||||||
|
a inc 1 if b < 5
|
||||||
|
c dec -10 if a >= 1
|
||||||
|
c inc -20 if c == 10
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue