Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require("fs")
- const performance = require("perf_hooks").performance
- const eol = require("os").EOL
- let startTime = performance.now()
- let part1 = (part2 = 0)
- let input = fs.readFileSync(__dirname + "/data.txt", "utf8").split(eol)
- let games = input.map((item) => {
- return item
- .split(": ")[1]
- .split("| ")
- .map((nums) => {
- return nums.match(/\d+/g)
- })
- })
- let multiTable = Array(games.length).fill(1)
- for (let i = 0; i < games.length; i++) {
- const filteredArray = games[i][1].filter((value) => games[i][0].includes(value))
- part1 += filteredArray.length > 0 ? 1 * Math.pow(2, filteredArray.length - 1) : 0
- for (let j = 0; j < filteredArray.length; j++) {
- multiTable[j + 1 + i] += ~~multiTable[i]
- }
- }
- part2 = multiTable.reduce((partialSum, a) => partialSum + a, 0)
- let time = performance.now() - startTime
- console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`)
Advertisement
Add Comment
Please, Sign In to add comment