UNPKG

expeditaet

Version:
25 lines (22 loc) 838 B
import { task } from '@alexaegis/advent-of-code-lib'; import { Direction, Vec2 } from '@alexaegis/advent-of-code-lib/model'; import packageJson from '../package.json'; export const p2 = (input: string): number => { const acc = { position: Vec2.ORIGIN.clone(), direction: Direction.NORTH, history: new Set<string>(), }; loop: for (const next of input.split(', ')) { if (next.startsWith('R')) acc.direction = acc.direction.right(); else if (next.startsWith('L')) acc.direction = acc.direction.left(); for (let i = 0; i < Number(next.slice(1)); i++) { acc.position.addMut(acc.direction); const coordString = acc.position.toString(); if (acc.history.has(coordString)) break loop; acc.history.add(coordString); } } return acc.position.manhattan(Vec2.ORIGIN); }; await task(p2, packageJson.aoc); // 159 ~0.48ms