blob: 4a501789daf4467c2a75314ae94ea1fd31663e58 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
const fs = require("fs");
let [workflows, parts] = fs.readFileSync("input", "utf8").trim().split("\n\n");
workflows = workflows.split("\n").map((l) => [l.split("{")[0], l .split("{")[1] .slice(0, -1).split(",").map((w) => w.split(":"))]);
parts = parts.split("\n").map((l) => l.slice(1, -1));
const findWorkflow = (name) => workflows.filter(([n, _]) => name == n)[0][1];
let part1 = 0;
for (const part of parts) {
eval(part);
let workflow = "in";
while (workflow != "A" && workflow != "R") {
const rules = findWorkflow(workflow);
for (const rule of rules) {
if (rule.length == 1) {
workflow = rule[0];
break;
} else if (eval(rule[0]) == true) {
workflow = rule[1];
break;
}
}
}
if (workflow == "A") part1 += x + m + a + s;
}
console.log(part1);
let part2 = 0
|