aboutsummaryrefslogtreecommitdiff
path: root/2024/05/solve.py
blob: 31b75c051ec2245488a7b1eccd20559308caac11 (plain) (blame)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/env python


L = open("input").read().split("\n\n")
ordering = [[int(c) for c in l.split("|")] for l in L[0].split("\n")]
numss = [[int(c) for c in l.split(",")] for l in L[1].strip().split("\n")]


def check(nums):
    for i, a in enumerate(nums):
        for j, b in enumerate(nums[i:]):
            if [b, a] in ordering:
                return ((i, i + j), False)
    return (None, True)


# "bubble sort"
def fix(nums):
    while True:
        pos, ordered = check(nums)
        if ordered:
            return nums
        nums[pos[0]], nums[pos[1]] = nums[pos[1]], nums[pos[0]]


def solve():
    res1 = 0
    res2 = 0

    for nums in numss:
        _, ordered = check(nums)
        if ordered:
            res1 += nums[len(nums) // 2]
        else:
            fixed = fix(nums)
            res2 += fixed[len(fixed) // 2]

    print(res1)
    print(res2)


solve()