UNPKG

expeditaet

Version:
38 lines (34 loc) 993 B
/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { task } from '@alexaegis/advent-of-code-lib'; import packageJson from '../package.json'; import { parse } from './parse.function.js'; const countBranches = ( jolts: number[], index: number, builtIn: number, cache: Map<number, number> = new Map<number, number>(), ): number => { const current = jolts[index]!; if (current === builtIn) { return 1; } let result = 0; for (let i = 1; i <= 3; i++) { const next = jolts[index + i]!; if (next - current <= 3) { if (cache.has(index + i)) { result += cache.get(index + i) ?? 0; } else { const branchResult = countBranches(jolts, index + i, builtIn, cache); cache.set(index + i, branchResult); result += branchResult; } } } return result; }; export const p2 = (input: string): number => { const { jolts, builtIn } = parse(input); return countBranches(jolts, 0, builtIn); }; await task(p2, packageJson.aoc); // 169255295254528 ~0.03ms