diff options
author | Marvin Borner | 2024-12-05 06:23:43 +0100 |
---|---|---|
committer | Marvin Borner | 2024-12-05 06:26:28 +0100 |
commit | 9a3f054dfdf46e027f8d153d865905c82207bf33 (patch) | |
tree | 10a42b2def1c0317082eef47773d7aaf27a67faa /2024 | |
parent | 71c541fff3f1375e0549f277be6ac7c5ebd1f138 (diff) |
good enough zzz
Diffstat (limited to '2024')
-rwxr-xr-x | 2024/05/solve.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/2024/05/solve.py b/2024/05/solve.py new file mode 100755 index 0000000..b17c986 --- /dev/null +++ b/2024/05/solve.py @@ -0,0 +1,47 @@ +#!/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): + pos = (-1, -1) + ordered = True + for i, a in enumerate(nums): + for j, b in enumerate(nums[i:]): + if [b, a] in ordering: + ordered = False + pos = (i, i + j) + break + if not ordered: + break + return (pos, ordered) + + +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 n, nums in enumerate(numss): + _, ordered = check(nums) + if ordered: + res1 += nums[len(nums) // 2] + else: + fixed = fix(nums.copy()) + res2 += fixed[len(fixed) // 2] + + print(res1) + print(res2) + + +solve() |