49 lines
828 B
Python
49 lines
828 B
Python
with open("input") as f:
|
|
data = f.read().strip().split('\n')
|
|
|
|
scores = {
|
|
')': 3,
|
|
']': 57,
|
|
'}': 1197,
|
|
'>': 25137,
|
|
}
|
|
opens = {
|
|
')': '(',
|
|
']': '[',
|
|
'}': '{',
|
|
'>': '<',
|
|
}
|
|
closings = {v: k for k, v in opens.items()}
|
|
second_scores = {
|
|
')': 1,
|
|
']': 2,
|
|
'}': 3,
|
|
'>': 4,
|
|
}
|
|
|
|
|
|
s = 0
|
|
ss = []
|
|
for line in data:
|
|
parens = []
|
|
for c in line:
|
|
if c in scores:
|
|
if opens[c] != parens[-1]:
|
|
s += scores[c]
|
|
break
|
|
else:
|
|
parens.pop()
|
|
else:
|
|
parens.append(c)
|
|
else:
|
|
if parens:
|
|
x = 0
|
|
for p in reversed(parens):
|
|
x = x*5 + second_scores[closings[p]]
|
|
ss.append(x)
|
|
|
|
print(s)
|
|
print(sorted(ss)[len(ss)//2])
|
|
|
|
|