Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require('fs');
- const eol = require('os').EOL;
- const startTime = new Date().getTime();
- let part1 = part2 = time = 0;
- let input = fs.readFileSync(__dirname + "/data.txt", 'utf8').split(eol);
- let dirSizes = [];
- function parseInput(index) {
- let size = 0;
- for (index; index < input.length; index++) {
- const element = input[index].split(" ");
- if (element[2] == '..') {
- break;
- } else if (element[1] == 'cd') {
- let [dirSize, i] = parseInput(++index);
- size += dirSize;
- index = i;
- } else if (!isNaN(element[0])) {
- size += Number(element[0]);
- }
- }
- if (size < 100000) part1 += size;
- dirSizes.push(size)
- return [size, index];
- }
- let totalSize = parseInput(0)[0];
- let sizeToDelete = 30000000 - (70000000 - totalSize);
- part2 = Math.min(...dirSizes.sort((a, b) => a - b).filter(a => a > sizeToDelete));
- time = new Date().getTime() - startTime
- console.log(`Part 1: ${part1}\nPart 2: ${part2}\nTimer: ${time} ms`);
Advertisement
Add Comment
Please, Sign In to add comment