You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
3 years ago
|
import sys
|
||
|
|
||
|
class lines:
|
||
|
def __init__(self, inp):
|
||
|
self.line = inp
|
||
|
def solve(self):
|
||
|
counter = True
|
||
|
counter2 = 0
|
||
|
operators = ['()', '[]', '<>', '{}']
|
||
|
scores = [('(]', 57), ('(}', 1197), ('(>', 25137), ('[)', 3), ('[}', 1197), ('[>', 25137), ('{)', 3), ('{]', 57), ('{>', 25137), ('<)', 3), ('<]', 57), ('<}', 1197)]
|
||
|
scores2 = [('(', 1), ('[', 2), ('{', 3), ('<', 4)]
|
||
|
while counter:
|
||
|
counter = False
|
||
|
for i in operators:
|
||
|
if i in self.line:
|
||
|
self.line = self.line.replace(i, '')
|
||
|
counter = True
|
||
|
for i in scores:
|
||
|
if i[0] in self.line:
|
||
|
return i[1], None
|
||
|
for i in range(len(self.line)-1, -1, -1):
|
||
|
counter2 = counter2*5
|
||
|
for f in scores2:
|
||
|
if self.line[i] == f [0]:
|
||
|
counter2 += f[1]
|
||
|
return 0, counter2
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
inp = []
|
||
|
solution = 0
|
||
|
solution2 = []
|
||
|
|
||
|
with open(sys.argv[1], 'r') as f:
|
||
|
for i in f.readlines():
|
||
|
i = i.strip()
|
||
|
inp.append(lines(i))
|
||
|
|
||
|
for f in inp:
|
||
|
tem1, temp2 = f.solve()
|
||
|
solution += tem1
|
||
|
if temp2 is not None:
|
||
|
solution2.append(temp2)
|
||
|
solution2 = sorted(solution2)
|
||
|
temp3 = len(solution2) // 2
|
||
|
print(solution2[temp3])
|
||
|
print(solution)
|