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((dices) => {
- let d = {}
- dices.split(", ").map((turn) => {
- let data = turn.split(" ")
- d[data[1]] = ~~data[0]
- })
- return d
- })
- })
- let rules = { red: 12, green: 13, blue: 14 }
- for (let i = 0; i < games.length; i++) {
- const game = games[i]
- let posible = true
- let dices = { red: 1, green: 1, blue: 1 }
- for (const turn of game) {
- for (const dice in turn) {
- if (rules[dice] < turn[dice]) {
- posible = false
- }
- if (dices[dice] < turn[dice]) {
- dices[dice] = turn[dice]
- }
- }
- }
- if (posible) part1 += i + 1
- part2 += Object.values(dices).reduce((acc, value) => acc * value, 1)
- }
- 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