From 3f0d2874f80821a1c5c9ef050b278b1b05be53a1 Mon Sep 17 00:00:00 2001 From: Baipyrus Date: Fri, 15 Dec 2023 19:23:08 +0100 Subject: [PATCH] init d11p2 --- Day11/Part2.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Day11/Part2.js diff --git a/Day11/Part2.js b/Day11/Part2.js new file mode 100644 index 0000000..20076ae --- /dev/null +++ b/Day11/Part2.js @@ -0,0 +1,38 @@ +import { readFileSync } from "fs"; +const t0 = performance.now(); + +const input = readFileSync("input.txt") + .toString() + .split(/\r*\n/) + .filter((e) => e.length > 0) + .map((e) => e.split("")); + +const expand = (arr) => + arr.reduce( + (a, i) => [ + ...a, + ...(i.some((e) => e !== ".") ? [i] : [i, Array(i.length).fill(".")]), + ], + [] + ); +const flip = (current) => + Array.from({ length: current[0].length }, (_, x) => + Array.from({ length: current.length }, (_, y) => current[y][x]) + ); + +const universe = flip(expand(flip(expand(input)))); +const galaxies = universe + .map((a, y) => a.map((b, x) => ({ s: b, x, y })).filter((b) => b.s === "#")) + .filter((e) => e.length > 0) + .reduce((a, i) => [...a, ...i], []); +const distances = galaxies.map((c, i) => + galaxies.reduce( + (a, n, j) => a + (j > i ? Math.abs(c.x - n.x) + Math.abs(c.y - n.y) : 0), + 0 + ) +); +const sum = distances.reduce((a, i) => a + i); +console.log(sum); + +const t1 = performance.now(); +console.log(`Runtime: ${t1 - t0}ms`);