-
Notifications
You must be signed in to change notification settings - Fork 0
/
day-10.2.py
40 lines (30 loc) · 748 Bytes
/
day-10.2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import re
from collections import deque
with open("input.txt",encoding="utf-8") as inpf:
data = inpf.read().strip().split("\n")
points_map = {
"(": 1,
"[": 2,
"{": 3,
"<": 4,
}
points = []
for chunk in data:
stack = deque()
score = 0
valid = True
for x in chunk:
if x in points_map.keys():
stack.append(x)
elif x in [")","]","}",">"]:
last = stack.pop()
if (last == "(" and x != ")") or (last == "[" and x != "]") or (last == "{" and x != "}") or (last == "<" and x != ">"):
valid = False
break
while len(stack) > 0:
last = stack.pop()
score *= 5
score += points_map.get(last,0)
if score and valid:
points.append(score)
print(sorted(points)[len(points)//2])