days 15-18 (be careful, crap
This commit is contained in:
91
day18/module.py
Normal file
91
day18/module.py
Normal file
@@ -0,0 +1,91 @@
|
||||
from aoc.input import get_input
|
||||
import copy
|
||||
import itertools
|
||||
import time
|
||||
import collections
|
||||
import re
|
||||
from aoc.partselector import part_one, part_two
|
||||
import functools
|
||||
|
||||
def pw(line):
|
||||
return line.strip()
|
||||
|
||||
def p1():
|
||||
inp = get_input(pw)
|
||||
rr = []
|
||||
for sample in inp:
|
||||
stack = []
|
||||
operand = ''
|
||||
operator = ''
|
||||
print(sample)
|
||||
for i in sample[0:]:
|
||||
if i == ' ':
|
||||
continue
|
||||
if i in list(map(str, range(10))):
|
||||
operand = i
|
||||
if operator == '':
|
||||
res = int(operand)
|
||||
elif operator == '+':
|
||||
res += int(operand)
|
||||
elif operator == '*':
|
||||
res *= int(operand)
|
||||
if i == '(':
|
||||
stack.append((res, operator, '('))
|
||||
operator = ''
|
||||
res = 0
|
||||
elif i == ')':
|
||||
brace = ''
|
||||
while brace != '(':
|
||||
value, operator, brace = stack.pop()
|
||||
if operator == '':
|
||||
if value != 0:
|
||||
res = value
|
||||
elif operator == '+':
|
||||
res += value
|
||||
elif operator == '*':
|
||||
res *= value
|
||||
else:
|
||||
operator = i
|
||||
if operator == '*':
|
||||
stack.append((res, operator, ''))
|
||||
operator = ''
|
||||
res = 0
|
||||
print(i, res, stack)
|
||||
while(len(stack)>0):
|
||||
print(res, stack)
|
||||
value, operator, brace = stack.pop()
|
||||
if operator == '':
|
||||
if value != 0:
|
||||
res = value
|
||||
elif operator == '+':
|
||||
res += value
|
||||
elif operator == '*':
|
||||
res *= value
|
||||
|
||||
|
||||
print(res)
|
||||
rr.append(res)
|
||||
res = 0
|
||||
|
||||
print(sum(rr))
|
||||
return inp
|
||||
|
||||
|
||||
def p2():
|
||||
inp = get_input(pw)
|
||||
print(len(inp))
|
||||
return 0
|
||||
|
||||
result1 = None
|
||||
if part_one():
|
||||
start = time.time()
|
||||
result1 = p1()
|
||||
print(round(1000*(time.time() - start), 2), 'ms')
|
||||
|
||||
|
||||
if part_two():
|
||||
start = time.time()
|
||||
p2()
|
||||
print(round(1000*(time.time() - start), 2), 'ms')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user