UNPKG

expeditaet

Version:
36 lines (30 loc) 1 kB
import { Direction, GridGraphNode, type GridGraph, type Weighter, } from '@alexaegis/advent-of-code-lib'; const pipeConnectorMap: Record<string, Direction[]> = { '|': [Direction.NORTH, Direction.SOUTH], '-': [Direction.WEST, Direction.EAST], L: [Direction.NORTH, Direction.EAST], J: [Direction.NORTH, Direction.WEST], '7': [Direction.SOUTH, Direction.WEST], F: [Direction.SOUTH, Direction.EAST], '.': [], S: [Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST], }; export const weighter: Weighter<string, Direction, GridGraphNode> = (a, b, dir) => { if (a.value === '.' && b.value === '.') { return 1; } const aConnectors = pipeConnectorMap[a.value.toString()]; const bConnectors = pipeConnectorMap[b.value.toString()]; const connection = (aConnectors?.includes(dir) && bConnectors?.includes(dir.reverse())) ?? false; return connection ? 1 : Number.POSITIVE_INFINITY; }; export const parse = (input: string): GridGraph => input.toGridGraph({ weighter, });