aboutsummaryrefslogtreecommitdiff
path: root/2024
diff options
context:
space:
mode:
authorMarvin Borner2024-12-05 06:23:43 +0100
committerMarvin Borner2024-12-05 06:26:28 +0100
commit9a3f054dfdf46e027f8d153d865905c82207bf33 (patch)
tree10a42b2def1c0317082eef47773d7aaf27a67faa /2024
parent71c541fff3f1375e0549f277be6ac7c5ebd1f138 (diff)
good enough zzz
Diffstat (limited to '2024')
-rwxr-xr-x2024/05/solve.py47
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()