#!/usr/bin/env python score = { '(': 1, '[': 2, '{': 3, '<': 4, } closing = { '(': ')', '[': ']', '{': '}', '<': '>', } def check_line_stack(line): stack = "" for c in line: if c in '{([<': stack += c continue l = stack[-1] if c != closing[l]: return None stack = stack[:-1] return stack def count_line_score(stack): result = 0 for i in reversed(range(len(stack))): result = result*5 result += score[stack[i]] return result scores = [] with open("input01.txt","r") as f: for line in f: stack = check_line_stack(line.strip()) if stack is None: continue scores.append(count_line_score(stack)) scores.sort() print(scores[int(len(scores)/2)])