From a2cd873901b098b5d775c4ebbbb7739f406023d0 Mon Sep 17 00:00:00 2001
From: Mark Jeeninga <mark.jeeninga@control.lth.se>
Date: Sat, 14 Dec 2024 13:09:35 +0000
Subject: [PATCH] Day 5 Mark

---
 day 5/day_5_mark.js | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 day 5/day_5_mark.js

diff --git a/day 5/day_5_mark.js b/day 5/day_5_mark.js
new file mode 100644
index 0000000..64cdce7
--- /dev/null
+++ b/day 5/day_5_mark.js	
@@ -0,0 +1,13 @@
+swap = (x,i,j) => {y = x[i]; x[i] = x[j]; x[j] = y; return false}
+range = x => [...Array(x).keys()]
+rules = input.split("\n\n")[0].split("\n")
+lines = input.split("\n\n")[1].split("\n").map(x => x.split(","))
+satisfiesRules = (x,y) => !rules.includes(y+"|"+x)
+isCorrect = (x,i,j) => satisfiesRules(x[i], x[j]) ? true : swap(x,i,j)
+sort = x => {while(!range(x.length).every(i => range(x.length-i).every(j => isCorrect(x,i,j+i)))){}; return x}
+sortedLines = lines.map(sort)
+lines = input.split("\n\n")[1].split("\n").map(x => x.split(","))
+
+output1 = sortedLines.filter((x,i) => x.toString() == lines[i].toString()).map(x => Number(x[(x.length-1)/2])).reduce((x,y) => x+y,0)
+
+output2 = sortedLines.filter((x,i) => x.toString() != lines[i].toString()).map(x => Number(x[(x.length-1)/2])).reduce((x,y) => x+y,0)
\ No newline at end of file
-- 
GitLab