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)
|