Day 10.
This commit is contained in:
34
2021/10/main.py
Normal file
34
2021/10/main.py
Normal file
@@ -0,0 +1,34 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user