ITS DONE
This commit is contained in:
36
2021/24.js
Normal file
36
2021/24.js
Normal file
@@ -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
|
||||||
|
}
|
||||||
36
2021/25.js
Normal file
36
2021/25.js
Normal file
@@ -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
|
||||||
|
}
|
||||||
2
out.js
2
out.js
@@ -1244,7 +1244,7 @@ if (typeof window == "undefined" && process.argv[2] == "test") {
|
|||||||
|
|
||||||
const year = "2021"
|
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 func = require(`./${year}/${i}.js`)
|
||||||
const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8")
|
const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8")
|
||||||
const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n")
|
const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n")
|
||||||
|
|||||||
2
test.js
2
test.js
@@ -3,7 +3,7 @@ if (typeof window == "undefined" && process.argv[2] == "test") {
|
|||||||
|
|
||||||
const year = "2021"
|
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 func = require(`./${year}/${i}.js`)
|
||||||
const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8")
|
const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8")
|
||||||
const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n")
|
const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n")
|
||||||
|
|||||||
Reference in New Issue
Block a user