From ad47193543f1aa78bbfdb4b2ab3a07e65f0424e3 Mon Sep 17 00:00:00 2001 From: Alix von Schirp Date: Thu, 4 Dec 2025 07:11:27 +0100 Subject: [PATCH] solution: 2025/4 Signed-off-by: Alix von Schirp --- src/2025/4/1/index.ts | 35 ++++++++++++++++++++++++++++++++ src/2025/4/2/index.ts | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 src/2025/4/1/index.ts create mode 100644 src/2025/4/2/index.ts diff --git a/src/2025/4/1/index.ts b/src/2025/4/1/index.ts new file mode 100644 index 0000000..c21ee42 --- /dev/null +++ b/src/2025/4/1/index.ts @@ -0,0 +1,35 @@ +export default async function runner(inputPath: string){ + const input = (await Bun.file(inputPath).text()).trimEnd(); + + let accessible = 0; + + input.split("\n").map(value => value.trim()).forEach((line, lineIndex, lineArray) => { + line.split("").forEach((char, charIndex, charArray) => { + if(char === ".") { + return; + } + + let touch = 0; + for(let xOffset = -1; xOffset<2; xOffset++) { + for (let yOffset = -1; yOffset<2; yOffset++) { + if(xOffset === 0 && yOffset === 0) continue; + let x = charIndex+xOffset; + let y = lineIndex+yOffset; + if(x<0 || y<0 || y>=lineArray.length || x>=charArray.length) { + continue; + } + if((lineArray[y]?.charAt(x) ?? "") === "@"){ + touch++; + } + } + } + if(touch<4) { + accessible++; + return; + } + + }) + }) + + console.log(accessible); +} diff --git a/src/2025/4/2/index.ts b/src/2025/4/2/index.ts new file mode 100644 index 0000000..d5b3bf0 --- /dev/null +++ b/src/2025/4/2/index.ts @@ -0,0 +1,46 @@ +export default async function runner(inputPath: string) { + let input = (await Bun.file(inputPath).text()).trimEnd(); + + + let accessible = 0; + let remove = 0; + do { + accessible = 0; + let newInput = "" + input.split("\n").map(value => value.trim()).forEach((line, lineIndex, lineArray) => { + line.split("").forEach((char, charIndex, charArray) => { + if (char === ".") { + newInput = newInput + "."; + return; + } + + let touch = 0; + for (let xOffset = -1; xOffset < 2; xOffset++) { + for (let yOffset = -1; yOffset < 2; yOffset++) { + if (xOffset === 0 && yOffset === 0) continue; + let x = charIndex + xOffset; + let y = lineIndex + yOffset; + if (x < 0 || y < 0 || y >= lineArray.length || x >= charArray.length) { + continue; + } + if ((lineArray[y]?.charAt(x) ?? "") === "@") { + touch++; + } + } + } + if (touch < 4) { + accessible++; + remove++; + newInput = newInput + "." + return; + } + newInput = newInput + "@" + }) + newInput = newInput + "\n" + }) + input = newInput + } while (accessible !== 0) + + + console.log(remove); +}