From 682e43490516ca88171f8163679f2be6b1366fa6 Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Fri, 10 Dec 2021 20:55:01 +0000 Subject: [PATCH] Do day 10 --- 10_1.py | 29 +++++++++++++++++++++++++++++ 10_2.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 10_1.py create mode 100644 10_2.py diff --git a/10_1.py b/10_1.py new file mode 100644 index 0000000..a6391b2 --- /dev/null +++ b/10_1.py @@ -0,0 +1,29 @@ +"""Find and score bothersome broken brackets""" + +parens = { + ")": "(", + "]": "[", + "}": "{", + ">": "<" +} +scores = { + ")": 3, + "]": 57, + "}": 1197, + ">": 25137, +} + +broken_chars = [] +with open("10_input.txt") as f: + for line in f: + stack = [] + for char in line.strip(): + if char in "(<[{": + stack.append(char) + else: + if len(stack) == 0 or parens[char] != stack.pop(): + broken_chars.append(char) + break + +print(broken_chars) +print(sum([scores[char] for char in broken_chars])) diff --git a/10_2.py b/10_2.py new file mode 100644 index 0000000..c785b85 --- /dev/null +++ b/10_2.py @@ -0,0 +1,44 @@ +"""Find and score bothersome broken brackets and fix the damn things""" +import pprint + +parens = { + ")": "(", + "]": "[", + "}": "{", + ">": "<" +} + +parens_rev = {v: k for k, v in parens.items()} + +scores = { + ")": 1, + "]": 2, + "}": 3, + ">": 4, +} + +line_scores = [] +with open("10_input.txt") as f: + for line in f: + stack = [] + broken = False + for char in line.strip(): + if char in "(<[{": + stack.append(char) + else: + if len(stack) == 0 or parens[char] != stack.pop(): + broken = True + break + + if not broken: + line_score = 0 + for i in range(len(stack) - 1, -1, -1): + open_char = stack[i] + close_char = parens_rev[stack[i]] + line_score *= 5 + line_score += scores[parens_rev[stack[i]]] + line_scores.append(line_score) + +line_scores.sort() +middle_i = (len(line_scores) - 1)//2 +print(line_scores[middle_i]) -- 2.45.2