Files
python-aoc-2020/day18/part1.py
Sebastian Seedorf af2e297a24 Day 18 (glamorized)
2020-12-19 00:48:12 +01:00

28 lines
735 B
Python

#!/usr/bin/env python3
lines = (x.strip().replace(" ", "") for x in open("input.txt"))
def evaluate(line):
stack = [0]
num = 0
op = ['+']
for char in line:
if char in '+*':
stack[-1] = stack[-1]*num if op[-1] == '*' else stack[-1]+num
op[-1] = char
num = 0
elif char == '(':
stack.append(0)
op.append('+')
elif char == ')':
stack[-1] = stack[-1]*num if op[-1] == '*' else stack[-1]+num
num = stack.pop()
op.pop()
else:
num = num*10 + int(char)
stack[-1] = stack[-1]*num if op[-1] == '*' else stack[-1]+num
return stack[0]
print(sum(evaluate(line) for line in lines))