UNPKG

expeditaet

Version:
43 lines (36 loc) 1.06 kB
import { Vec2 } from '@alexaegis/advent-of-code-lib/model'; import { parseSubmarineCommand } from './model/submarine-command.interface.js'; import { SubmarineInstruction } from './model/submarine-instruction.enum.js'; import { task } from '@alexaegis/advent-of-code-lib'; import packageJson from '../package.json'; export const p2 = (input: string): number => { const result = input .lines() .map(parseSubmarineCommand) .reduce( (acc, { amplitude, instruction }) => { switch (instruction) { case SubmarineInstruction.FORWARD: { acc.position.addMut({ x: amplitude, y: acc.aim * amplitude, }); break; } case SubmarineInstruction.DOWN: { acc.aim = acc.aim + amplitude; break; } case SubmarineInstruction.UP: { acc.aim = acc.aim - amplitude; break; } // No default } return acc; }, { position: Vec2.ORIGIN.clone(), aim: 0 }, ); return result.position.x * result.position.y; }; await task(p2, packageJson.aoc); // 1971232560 ~0.34ms