44 lines
688 B
Python
44 lines
688 B
Python
#!/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)]) |