expeditaet
Version:
Advent of Code Solutions
35 lines (28 loc) • 926 B
text/typescript
import { lcm, task } from '@alexaegis/advent-of-code-lib';
import packageJson from '../package.json';
import { parse } from './parse.function.js';
export const p2 = (input: string): number => {
const { monkeyMap, monkeys } = parse(input);
const leastCommonTest = lcm(monkeys.map((m) => m.test));
for (let round = 0; round < 10_000; round++) {
for (const monkey of monkeys) {
for (const item of monkey.items) {
const afterBored = monkey.operation(item);
if (afterBored % monkey.test === 0) {
const target = monkeyMap[monkey.trueTarget];
target?.items.push(afterBored % leastCommonTest);
} else {
const target = monkeyMap[monkey.falseTarget];
target?.items.push(afterBored % leastCommonTest);
}
monkey.inspects++;
}
monkey.items = [];
}
}
return monkeys
.map((m) => m.inspects)
.max(2)
.product();
};
await task(p2, packageJson.aoc); // 25712998901 ~29.12ms