diff --git a/Day8/Part2.js b/Day8/Part2.js new file mode 100644 index 0000000..0de2239 --- /dev/null +++ b/Day8/Part2.js @@ -0,0 +1,29 @@ +import { readFileSync } from "fs"; +const t0 = performance.now(); + +const input = readFileSync("input.txt") + .toString() + .split("\n") + .filter((e) => e.length > 0); +const instructions = input[0].split(""); +const maps = input.slice(1).map((a) => { + const [name, pair] = a.split(" = "); + const mapping = pair.match(/^\(([A-Z]{3}), ([A-Z]{3})\)$/); + const [_, L, R] = mapping; + return { name, mapping: { L, R } }; +}); +let count, + index = (count = 0); +let current = maps.find((e) => e.name === "AAA"); +while (current.name !== "ZZZ") { + const direction = instructions[index]; + const mapping = current.mapping[direction]; + + current = maps.find((e) => e.name === mapping); + index = (index + 1) % instructions.length; + count++; +} +console.log(count); + +const t1 = performance.now(); +console.log(`Runtime: ${t1 - t0}ms`);