@@ -0,0 +1,23 @@ | |||
pts = {')': 3, ']': 57, '}': 1197, '>': 25137} | |||
objs = '()[]{}<>' | |||
fam = lambda c: objs.index(c) // 2 | |||
val = lambda c: objs.index(c) % 2 | |||
ans1 = 0 | |||
scores = [] | |||
for ln in text.splitlines(): | |||
stack = [] | |||
for c in ln: | |||
if val(c) == 0: | |||
stack.append(c) | |||
elif fam(c) == fam(stack[-1]) and val(c) == 1: | |||
stack.pop() | |||
else: | |||
ans1 += pts[c] | |||
break | |||
else: | |||
score = 0 | |||
while stack: | |||
score *= 5 | |||
score += fam(stack.pop()) + 1 | |||
scores.append(score) | |||
ans2 = sorted(scores)[len(scores) // 2] |