1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { LoadInput } from "../common.ts";
- import { ParseMap, GetNextNodeInMap, type MapNodeTree } from "./8_common.ts";
- const tests_EZ = [
- "RL",
- "",
- "AAA = (BBB, CCC)",
- "BBB = (DDD, EEE)",
- "CCC = (ZZZ, GGG)",
- "DDD = (DDD, DDD)",
- "EEE = (EEE, EEE)",
- "GGG = (GGG, GGG)",
- "ZZZ = (ZZZ, ZZZ)",
- ];
- const tests_longer = [
- "LLR",
- "",
- "AAA = (BBB, BBB)",
- "BBB = (AAA, ZZZ)",
- "ZZZ = (ZZZ, ZZZ)",
- ];
- const START_NODE: keyof MapNodeTree = "AAA";
- const END_NODE: keyof MapNodeTree = "ZZZ";
- const input = await LoadInput(8);
- const [directions, map] = ParseMap(input);
- let nodeID: keyof MapNodeTree|undefined = START_NODE;
- let stepsTaken = 0;
- while (nodeID = GetNextNodeInMap(directions, map, nodeID, stepsTaken)) {
- stepsTaken++;
- if (nodeID == END_NODE) {
- break;
- }
- }
- console.log(`A total of ${stepsTaken} steps were taken`);
|