Files
aocutil/2021/8.js
nim-ka 0485b4f035 .
2022-11-19 22:52:51 +00:00

37 lines
1.2 KiB
JavaScript

function day8(input, part2) {
let lines = input.split("\n").map((e) => e.split(" ").splitOnElement("|").map((e) => e.map((e) => e.split("").sort())))
if (!part2) {
return lines.map((e) => e[1].count((e) => [2, 4, 3, 7].includes(e.length))).sum()
}
let sum = 0
for (let line of lines) {
let samples = line.flat()
let n1 = samples.find((e) => e.length == 2)
let n7 = samples.find((e) => e.length == 3)
let n4 = samples.find((e) => e.length == 4)
let a235 = samples.filter((e) => e.length == 5)
let a069 = samples.filter((e) => e.length == 6)
let n8 = samples.find((e) => e.length == 7)
let n6 = a069.find((e) => n1.sub(e).length == 1)
let n9 = a069.find((e) => n4.sub(e).length == 0)
let n0 = a069.find((e) => e != n6 && e != n9)
let n2 = a235.find((e) => n4.sub(e).length == 2)
let n3 = a235.find((e) => n1.sub(e).length == 0)
let n5 = a235.find((e) => e != n2 && e != n3)
sum += +line[1].map((e) => [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9].findIndex((n) => n.join("") == e.join(""))).join("")
}
return sum
}
if (typeof window == "undefined") {
module.exports = day8
}