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

---
 day 8/day_8_mark.js | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 day 8/day_8_mark.js

diff --git a/day 8/day_8_mark.js b/day 8/day_8_mark.js
new file mode 100644
index 0000000..197b0b7
--- /dev/null
+++ b/day 8/day_8_mark.js	
@@ -0,0 +1,24 @@
+range = x => [...Array(x).keys()]
+
+map = input.split("\n").map(x=>x.split(""))
+n = map.length
+m = map[0].length
+
+print = () => map.map(x=>x.join("")).join("\n")
+
+markEntry = (i,j) => i >= 0 && i < n && j >= 0 && j < m ? map[i][j] = "#" : undefined
+markPair = (x,y) => markEntry(2*x[0] - y[0], 2*x[1] - y[1]) + markEntry(2*y[0] - x[0], 2*y[1] - x[1])
+
+locs = {}
+registerLoc = (i,j) => locs[map[i][j]] ? locs[map[i][j]].push([i,j]) : locs[map[i][j]] = [[i,j]]
+range(n).map(i => range(m).map(j => map[i][j] != '.' ? registerLoc(i,j) : undefined))
+
+Object.keys(locs).map(x => range(locs[x].length-1).map(i => range(locs[x].length-i-1).map(j => markPair(locs[x][i], locs[x][i + j + 1]))))
+
+output1 = range(n).reduce((x,i) => x + range(m).reduce((y,j) => y + (map[i][j] == '#'),0),0)
+
+markPairLine = (x,y) => range(Math.max(n,m)).map(i => markEntry(x[0] + i*(x[0] - y[0]), x[1] + i*(x[1] - y[1])) + markEntry(y[0] - i*(x[0] - y[0]), y[1] - i*(x[1] - y[1])))
+
+Object.keys(locs).map(x => range(locs[x].length-1).map(i => range(locs[x].length-i-1).map(j => markPairLine(locs[x][i], locs[x][i + j + 1]))))
+
+output2 = range(n).reduce((x,i) => x + range(m).reduce((y,j) => y + (map[i][j] == '#'),0),0)
\ No newline at end of file
-- 
GitLab