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