1234567891011121314151617181920212223242526272829 |
- import argparse
- import functools
- from typing import NamedTuple, List, Dict, Set
- parser = argparse.ArgumentParser()
- parser.add_argument("ifile", type=argparse.FileType('r'))
- args = parser.parse_args()
- ILLEGAL_CHARS = {
- ')': (3, '('),
- ']': (57, '['),
- '}': (1197, '{'),
- '>': (25137, '<')
- }
- def balanceSequence(seq: str):
- stack = []
- for char in seq:
- if char not in ILLEGAL_CHARS.keys():
- stack.append(char)
- else:
- prev = stack.pop()
- if prev != ILLEGAL_CHARS[char][1]:
- return ILLEGAL_CHARS[char][0]
- return 0
- print(sum(map(balanceSequence, map(str.strip, args.ifile.readlines()))))
|