part1.py 675 B

1234567891011121314151617181920212223242526272829
  1. import argparse
  2. import functools
  3. from typing import NamedTuple, List, Dict, Set
  4. parser = argparse.ArgumentParser()
  5. parser.add_argument("ifile", type=argparse.FileType('r'))
  6. args = parser.parse_args()
  7. ILLEGAL_CHARS = {
  8. ')': (3, '('),
  9. ']': (57, '['),
  10. '}': (1197, '{'),
  11. '>': (25137, '<')
  12. }
  13. def balanceSequence(seq: str):
  14. stack = []
  15. for char in seq:
  16. if char not in ILLEGAL_CHARS.keys():
  17. stack.append(char)
  18. else:
  19. prev = stack.pop()
  20. if prev != ILLEGAL_CHARS[char][1]:
  21. return ILLEGAL_CHARS[char][0]
  22. return 0
  23. print(sum(map(balanceSequence, map(str.strip, args.ifile.readlines()))))