54 lines
1,018 B
Python
54 lines
1,018 B
Python
with open("input.txt") as f:
|
|
lines = f.read().split('\n')
|
|
|
|
score = 0
|
|
incomplete = []
|
|
for line in lines:
|
|
corrupt = False
|
|
stack = []
|
|
for char in line:
|
|
if char in ['(','[','{','<']:
|
|
stack.append(char)
|
|
elif char == ')':
|
|
prev = stack.pop()
|
|
if prev != '(':
|
|
score += 3
|
|
corrupt = True
|
|
break
|
|
elif char == ']':
|
|
prev = stack.pop()
|
|
if prev != '[':
|
|
score += 57
|
|
corrupt = True
|
|
break
|
|
elif char == '}':
|
|
prev = stack.pop()
|
|
if prev != '{':
|
|
score += 1197
|
|
corrupt = True
|
|
break
|
|
elif char == '>':
|
|
prev = stack.pop()
|
|
if prev != '<':
|
|
score += 25137
|
|
corrupt = True
|
|
break
|
|
if not corrupt:
|
|
incomplete.append(stack)
|
|
print(score)
|
|
scores = []
|
|
for stack in incomplete:
|
|
score = 0
|
|
while stack:
|
|
prev = stack.pop()
|
|
if prev == '(':
|
|
score = 5*score + 1
|
|
elif prev == '[':
|
|
score = 5*score + 2
|
|
elif prev == '{':
|
|
score = 5*score + 3
|
|
elif prev == '<':
|
|
score = 5*score + 4
|
|
scores.append(score)
|
|
from statistics import median
|
|
print(median(scores)) |