Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require("fs")
- const { performance } = require("perf_hooks")
- const eol = require("os").EOL
- const startTime = performance.now()
- let part1 = 0,
- part2 = 0
- const input = fs.readFileSync(__dirname + "/data.txt", "utf8").split(eol);
- const rules = { red: 12, green: 13, blue: 14 };
- const games = input.map((item) => item.split(": ")[1].split("; ").map((dices) =>
- dices.split(", ").reduce((d, turn) => (([value, key] = turn.split(" ")), (d[key] = ~~value), d), {})
- ));
- games.forEach((game, i) => (part1 += game.every((turn) => Object.entries(turn).every(([dice, value]) => rules[dice] >= value)) ? i + 1 : 0));
- games.forEach((game) => (part2 += Object.values(game.reduce((acc, turn) => (Object.entries(turn).forEach(([dice, value]) => (acc[dice] = Math.max(acc[dice], value))), acc), { red: 1, green: 1, blue: 1})).reduce((acc, value) => acc * value, 1)));
- const time = performance.now() - startTime;
- console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`);
Advertisement
Add Comment
Please, Sign In to add comment