44 lines
688 B
Python
Raw Permalink Normal View History

2021-12-10 06:43:02 +01:00
#!/usr/bin/env python
score = {
'(': 1,
'[': 2,
'{': 3,
'<': 4,
}
closing = {
'(': ')',
'[': ']',
'{': '}',
'<': '>',
}
def check_line_stack(line):
stack = ""
for c in line:
if c in '{([<':
stack += c
continue
l = stack[-1]
if c != closing[l]:
return None
stack = stack[:-1]
return stack
def count_line_score(stack):
result = 0
for i in reversed(range(len(stack))):
result = result*5
result += score[stack[i]]
return result
scores = []
with open("input01.txt","r") as f:
for line in f:
stack = check_line_stack(line.strip())
if stack is None:
continue
scores.append(count_line_score(stack))
scores.sort()
print(scores[int(len(scores)/2)])