mosredna

AoC 2022 day 7

Dec 7th, 2022 (edited)
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 1.04 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. let dirSizes = [];
  9. function parseInput(index) {
  10.     let size = 0;
  11.     for (index; index < input.length; index++) {
  12.         const element = input[index].split(" ");
  13.         if (element[2] == '..') {
  14.             break;
  15.         } else if (element[1] == 'cd') {
  16.             let [dirSize, i] = parseInput(++index);
  17.             size += dirSize;
  18.             index = i;
  19.         } else if (!isNaN(element[0])) {
  20.             size += Number(element[0]);
  21.         }
  22.     }
  23.     if (size < 100000) part1 += size;
  24.     dirSizes.push(size)
  25.     return [size, index];
  26. }
  27.  
  28. let totalSize = parseInput(0)[0];
  29. let sizeToDelete = 30000000 - (70000000 - totalSize);
  30. part2 = Math.min(...dirSizes.sort((a, b) => a - b).filter(a => a > sizeToDelete));
  31.  
  32. time = new Date().getTime() - startTime
  33. console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`);
Advertisement
Add Comment
Please, Sign In to add comment