UNPKG

expeditaet

Version:
34 lines (30 loc) 923 B
import { task } from '@alexaegis/advent-of-code-lib'; import packageJson from '../package.json'; import { calculateVariations, parse, type SpringLog } from './parse.js'; const unfoldEntry = (times: number) => (entry: SpringLog): SpringLog => ({ ...entry, log: Array.from({ length: times }) .map(() => entry.log) .join('?'), criteria: Array.from({ length: times }).flatMap(() => entry.criteria), }); export const p2 = (input: string): number => parse(input) .map(unfoldEntry(5)) .map((entry) => { const [currentCriteria, ...remainingCriteria] = entry.criteria; if (!currentCriteria) { throw new Error('no criteria for line'); } return calculateVariations({ currentCriteria, currentOriginalCriteria: currentCriteria, rebuiltLog: '', remainingCriteria, remainingDamagedLog: entry.log, }); }) .sum(); await task(p2, packageJson.aoc); // 7030194981795 ~539.06ms