35 lines
748 B
JavaScript
35 lines
748 B
JavaScript
import { readFile } from "fs/promises";
|
|
|
|
if (process.argv.length <= 2) {
|
|
console.error(`Needs more args >:(`).
|
|
process.exit(0);
|
|
}
|
|
|
|
const fileToRead = process.argv[2];
|
|
const file = await readFile(fileToRead, `utf-8`);
|
|
|
|
const pattern = /(?<cmd>mul|do|don't)\(((?<a>\d{1,3}),(?<b>\d{1,3}))?\)/g;
|
|
|
|
const commands = file.matchAll(pattern);
|
|
|
|
let part1Sum = 0;
|
|
let part2Sum = 0;
|
|
let enabled = true
|
|
for (const command of commands) {
|
|
const { cmd, a, b } = command.groups;
|
|
|
|
switch (cmd) {
|
|
case "do": enabled = true; break
|
|
case "don't": enabled = false; break
|
|
case "mul": {
|
|
part1Sum += a * b;
|
|
if (enabled) {
|
|
part2Sum += a * b;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
|
|
console.log(`Part 1 Answer: ${part1Sum}`);
|
|
console.log(`Part 2 Answer: ${part2Sum}`);
|