expeditaet
Version:
Advent of Code Solutions
23 lines (16 loc) • 760 B
text/typescript
import { split, task } from '@alexaegis/advent-of-code-lib';
import packageJson from '../package.json';
import { ExpeditionFileSystem } from './expedition-file-system.class.js';
const TOTAL_DISK_SPACE = 70_000_000;
const REQUIRED_FREE_SPACE = 30_000_000;
export const p2 = (input: string): number => {
const fs = new ExpeditionFileSystem().interpret(split(input));
const currentSize = fs.root.size;
const currentFreeSpace = TOTAL_DISK_SPACE - currentSize;
const freeTreshold = REQUIRED_FREE_SPACE - currentFreeSpace;
const deleteCandidates = [...fs.root.walkDirectories()]
.filter((dir) => dir.size >= freeTreshold)
.sort((a, b) => a.size - b.size);
return deleteCandidates[0]?.size ?? 0;
};
await task(p2, packageJson.aoc); // 8319096 ~0.65ms