summaryrefslogtreecommitdiff
path: root/2024/day05/solve.py
diff options
context:
space:
mode:
authorBotond Hende <nettingman@gmail.com>2024-12-11 10:18:23 +0100
committerBotond Hende <nettingman@gmail.com>2024-12-11 10:18:23 +0100
commit0a5c1f77d01fc0bd166494787f24562e2fd3a9e9 (patch)
tree99b0d38ef86653b6ff4aae26381ebdf0895f829d /2024/day05/solve.py
parentcbf5c348db4a693b15e455a23e07072587edf4b0 (diff)
renamed day folders to two digit format
Diffstat (limited to '2024/day05/solve.py')
-rw-r--r--2024/day05/solve.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/2024/day05/solve.py b/2024/day05/solve.py
new file mode 100644
index 0000000..b2b578a
--- /dev/null
+++ b/2024/day05/solve.py
@@ -0,0 +1,27 @@
+def middle_page_if_update_correct(update: list[str], rules: list[tuple[str, str]]) -> int:
+ for idx, page in enumerate(update):
+ for previous_page in (update[previous_idx] for previous_idx in range(idx)):
+ if (page, previous_page) in rules:
+ return 0
+
+ return int(update[len(update) // 2])
+
+
+rules = []
+updates = []
+
+reading_updates = False
+with open("input") as f:
+ for line in f.readlines():
+ if reading_updates:
+ updates.append(line.strip().split(","))
+ elif line == "\n":
+ reading_updates = True
+ else:
+ rules.append(tuple(line.strip().split("|")))
+
+result = 0
+for update in updates:
+ result += middle_page_if_update_correct(update, rules)
+
+print(result)