Files
aocutil/2021/4.js
nim-ka d1a727ca18 .
2022-11-09 01:02:07 +00:00

35 lines
928 B
JavaScript

function day4(input, part2) {
input = input.split("\n")
let seq = input.shift().split(",").num()
let grids = input.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
}