mosredna

AoC 2022 day 3

Dec 3rd, 2022 (edited)
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 0.95 KB | Source Code | 0 0
  1. const fs = require('fs');
  2. const eol = require('os').EOL;
  3.  
  4. const startTime = new Date().getTime();
  5. let part1 = part2 = time = 0;
  6. let input = fs.readFileSync(__dirname + "/data.txt", 'utf8').split(eol);
  7.  
  8. function getPrio(char) {
  9.     let prio = char.charCodeAt();
  10.     return char == char.toLowerCase() ? prio - 96 : prio - 64 + 26
  11. }
  12.  
  13. part1 = input.map(val => {
  14.     let temp = val.split("");
  15.     return [temp.slice(0, temp.length / 2), temp.slice(temp.length / 2)];
  16. }).map(val =>
  17.     getPrio(val[0].filter((i) => val[1].includes(i))[0])
  18. ).reduce((a, b) => a + b)
  19.  
  20. for (let i = 0; i < input.length; i += 3) {
  21.     let sacks = input.slice(i, i + 3).map((line) => line.split(""));
  22.     for (let j = 1; j < sacks.length; j++) {
  23.         unique = sacks[0].filter((char) => sacks[j].includes(char));
  24.     }
  25.     part2 += getPrio(unique[0]);
  26. }
  27.  
  28. time = new Date().getTime() - startTime
  29.  
  30. console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`);
Advertisement
Add Comment
Please, Sign In to add comment