diff --git a/Day8/Part1.js b/Day8/Part1.js index 3a620a8..0de2239 100644 --- a/Day8/Part1.js +++ b/Day8/Part1.js @@ -1,8 +1,29 @@ import { readFileSync } from "fs"; const t0 = performance.now(); -const input = readFileSync("input.txt").toString(); -console.log(input); +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`);