Files
aoc2020/day18/module.py

92 lines
2.2 KiB
Python

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')