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