summaryrefslogtreecommitdiff
path: root/2024/day05/solve.py
blob: b2b578a955e2154009e196361c5f841ebb5381df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)