Files
aocutil/2021/4.js
2022-11-25 23:12:04 +00:00

39 lines
997 B
JavaScript

function day4(input, part2) {
let lines = input.split("\n")
let seq = lines.shift().split(",").num()
let grids = lines.splitOnElement("").filter((e) => e.length).map((grid) => Grid.fromStr(grid.map((line) => line.replace(/^ /, "")).join("\n"), /\s+/).mapMut((e) => [+e, false]))
let score
for (let num of seq) {
for (let grid of grids) {
if (grid.won) {
continue
}
let pt = grid.findIndex((e) => e[0] == num)
if (pt == Point.NONE) {
continue
}
grid.set(pt, [num, true])
if ([...grid.getRows(), ...grid.getColumns()].some((row) => row.every((e) => e[1]))) {
grid.won = true
if (!score || part2) {
score = grid.findAll((e) => !e[1]).map((e) => e[0]).sum() * num
}
}
}
}
return score
}
if (typeof window == "undefined") {
module.exports = day4
}