mosredna

AoC 2023 day 2 Optimized by AI

Dec 2nd, 2023 (edited)
692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 0.98 KB | Source Code | 0 0
  1. const fs = require("fs")
  2. const { performance } = require("perf_hooks")
  3. const eol = require("os").EOL
  4.  
  5. const startTime = performance.now()
  6. let part1 = 0,
  7.     part2 = 0
  8.  
  9. const input = fs.readFileSync(__dirname + "/data.txt", "utf8").split(eol);
  10. const rules = { red: 12, green: 13, blue: 14 };
  11.  
  12. const games = input.map((item) => item.split(": ")[1].split("; ").map((dices) =>
  13.   dices.split(", ").reduce((d, turn) => (([value, key] = turn.split(" ")), (d[key] = ~~value), d), {})
  14. ));
  15.  
  16. games.forEach((game, i) => (part1 += game.every((turn) => Object.entries(turn).every(([dice, value]) => rules[dice] >= value)) ? i + 1 : 0));
  17. 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)));
  18.  
  19. const time = performance.now() - startTime;
  20. console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`);
Advertisement
Add Comment
Please, Sign In to add comment