From 91cf70e1f7bd2c3016e9dd40f3ac0674a58d0b65 Mon Sep 17 00:00:00 2001 From: nim-ka Date: Fri, 25 Nov 2022 08:39:30 +0000 Subject: [PATCH] ITS DONE --- 2021/24.js | 36 ++++++++++++++++++++++++++++++++++++ 2021/25.js | 36 ++++++++++++++++++++++++++++++++++++ out.js | 2 +- test.js | 2 +- 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 2021/24.js create mode 100644 2021/25.js diff --git a/2021/24.js b/2021/24.js new file mode 100644 index 0000000..991eb22 --- /dev/null +++ b/2021/24.js @@ -0,0 +1,36 @@ +function day24(input, part2) { + let lines = input.split("\n") + let ops = lines.splitOnElement("inp w").filter((e) => e.length).transpose() + + let compareVals = ops[4].map((e) => +e.split(" ").last) + let stackVals = ops[14].map((e) => +e.split(" ").last) + + let len = compareVals.length + + let stack = [] + let num = Array(len).fill() + + for (let i = 0; i < len; i++) { + if (compareVals[i] > 0) { + stack.push([i, stackVals[i]]) + } else { + num[i] = stack.pop() + num[i][1] += compareVals[i] + num[num[i][0]] = [i, -num[i][1]] + } + } + + for (let i = 0; i < len; i++) { + if (num[i][0] > i) { + num[i] = part2 ? Math.max(1, 1 + num[i][1]) : Math.min(9, 9 + num[i][1]) + } else { + num[i] = num[num[i][0]] + num[i][1] + } + } + + return num.join("") +} + +if (typeof window == "undefined") { + module.exports = day24 +} diff --git a/2021/25.js b/2021/25.js new file mode 100644 index 0000000..3cd3479 --- /dev/null +++ b/2021/25.js @@ -0,0 +1,36 @@ +function step(grid, dir) { + let moved = false + + grid.mapMut((e, pt, g) => { + let target = dir == 1 ? + new Point((pt.x + 1) % g.width, pt.y) : + new Point(pt.x, (pt.y + 1) % g.height) + + if (e % 3 == dir && g.get(target) % 3 == 0) { + g.set(target, dir * 3) + moved = true + return e + } else { + return e * 3 + e + } + }).mapMut((e) => ((e / 3) | 0) % 3) + + return moved +} + +function day25(input) { + let grid = Grid.fromStr(input).mapMut((e) => ".>v".indexOf(e)) + + let moved + let steps = 0 + + do { + steps++ + } while (step(grid, 1) + step(grid, 2)) + + return steps +} + +if (typeof window == "undefined") { + module.exports = day25 +} diff --git a/out.js b/out.js index 1060081..b047a68 100644 --- a/out.js +++ b/out.js @@ -1244,7 +1244,7 @@ if (typeof window == "undefined" && process.argv[2] == "test") { const year = "2021" - for (let i = +process.argv[3] || 1; i <= 23; i++) { + for (let i = +process.argv[3] || 1; i <= 25; i++) { const func = require(`./${year}/${i}.js`) const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8") const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n") diff --git a/test.js b/test.js index 1471c58..0804e60 100644 --- a/test.js +++ b/test.js @@ -3,7 +3,7 @@ if (typeof window == "undefined" && process.argv[2] == "test") { const year = "2021" - for (let i = +process.argv[3] || 1; i <= 23; i++) { + for (let i = +process.argv[3] || 1; i <= 25; i++) { const func = require(`./${year}/${i}.js`) const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8") const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n")