1
0
Fork 0

Add day 8 solutions

This commit is contained in:
Pedro de Oliveira 2017-12-08 21:11:13 +00:00
parent e56615e7ee
commit d222b38512
4 changed files with 1131 additions and 0 deletions

66
8/8p1.py Executable file
View File

@ -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()

61
8/8p2.py Executable file
View File

@ -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()

4
8/example.txt Normal file
View File

@ -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

1000
8/input.txt Normal file

File diff suppressed because it is too large Load Diff