calculate cycle sizes for each starting position

This commit is contained in:
Baipyrus 2023-12-09 21:03:17 +01:00
parent f59e1530a5
commit f7accd2a13

View File

@ -12,18 +12,23 @@ const maps = input.slice(1).map((a) => {
const [_, L, R] = mapping; const [_, L, R] = mapping;
return { name, mapping: { L, R } }; return { name, mapping: { L, R } };
}); });
let count = 0, const cycles = maps
.filter((e) => e.name.endsWith("A"))
.map((e) => {
let count = 0,
index = 0; index = 0;
let current = maps.find((e) => e.name === "AAA"); let current = e;
while (current.name !== "ZZZ") { while (!current.name.endsWith("Z")) {
const direction = instructions[index]; const direction = instructions[index];
const mapping = current.mapping[direction]; const mapping = current.mapping[direction];
current = maps.find((e) => e.name === mapping); current = maps.find((a) => a.name === mapping);
index = (index + 1) % instructions.length; index = (index + 1) % instructions.length;
count++; count++;
} }
console.log(count); return { start: e, end: current, length: count };
});
console.log(cycles);
const t1 = performance.now(); const t1 = performance.now();
console.log(`Runtime: ${t1 - t0}ms`); console.log(`Runtime: ${t1 - t0}ms`);