UNPKG

expeditaet

Version:
37 lines (30 loc) 1.02 kB
import { split, task } from '@alexaegis/advent-of-code-lib'; import { Direction, Vec2, isDirectionMarker, type Vec2Like, } from '@alexaegis/advent-of-code-lib/model'; import packageJson from '../package.json'; const keypad = [ [undefined, undefined, 1, undefined, undefined], [undefined, 2, 3, 4, undefined], [5, 6, 7, 8, 9], [undefined, 'A', 'B', 'C', undefined], [undefined, undefined, 'D', undefined, undefined], ].reverse(); const toKeypadNumber = (vec: Vec2Like): number | string | undefined => keypad[vec.y]?.[vec.x]; export const p2 = (input: string): string => { const position = new Vec2(0, 2); const result = split(input).reduce((acc, line) => { for (const direction of [...line] .filter(isDirectionMarker) .map((marker) => Direction.fromMarker(marker).reverse('v'))) position.addMut(direction, { limit: (v) => toKeypadNumber(v) === undefined, }); return `${acc}${toKeypadNumber(position) ?? ''}`; }, ''); return result; }; await task(p2, packageJson.aoc); // 46C91 ~1.9ms