mosredna

AoC 2023 day 4

Dec 3rd, 2023 (edited)
884
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 0.96 KB | Source Code | 0 0
  1. const fs = require("fs")
  2. const performance = require("perf_hooks").performance
  3. const eol = require("os").EOL
  4.  
  5. let startTime = performance.now()
  6. let part1 = (part2 = 0)
  7. let input = fs.readFileSync(__dirname + "/data.txt", "utf8").split(eol)
  8.  
  9. let games = input.map((item) => {
  10.     return item
  11.         .split(": ")[1]
  12.         .split("| ")
  13.         .map((nums) => {
  14.             return nums.match(/\d+/g)
  15.         })
  16. })
  17.  
  18. let multiTable = Array(games.length).fill(1)
  19. for (let i = 0; i < games.length; i++) {
  20.     const filteredArray = games[i][1].filter((value) => games[i][0].includes(value))
  21.     part1 += filteredArray.length > 0 ? 1 * Math.pow(2, filteredArray.length - 1) : 0
  22.     for (let j = 0; j < filteredArray.length; j++) {
  23.         multiTable[j + 1 + i] += ~~multiTable[i]
  24.     }
  25. }
  26.  
  27. part2 = multiTable.reduce((partialSum, a) => partialSum + a, 0)
  28. let time = performance.now() - startTime
  29. console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`)
Advertisement
Add Comment
Please, Sign In to add comment