Advent-of-Code/2021/10/main.py

35 lines
1.1 KiB
Python
Raw Normal View History

2021-12-10 09:10:33 -05:00
openers = ['(', '[', '{', '<']
closers = [')', ']', '}', '>']
points = [3, 57, 1197, 25137]
score = 0
with open('data', 'r') as fp:
# NOTE(dev): We assume all lines are the same length
for line in fp:
stack = []
for ch in line.strip():
line_score = 0
if(ch in openers):
stack.append(ch)
elif(len(stack) == 0):
try:
i = closers.index(ch)
line_score += points[closers.index(ch)]
except ValueError: # not a closer
pass
else:
try:
i = closers.index(ch)
last = stack[-1]
stack.pop()
if(last != openers[i]):
line_score += points[i]
score += line_score
print(last, '!=', openers[i])
break
except ValueError: # not an opener or closer!
pass
score += line_score
print(score)