adventofcode/2022/11/part2.js

38 lines
869 B
JavaScript

import * as R from "remeda";
const playTurn = (monkeys, monkey) => {
const max = monkeys.map( R.prop('divisible') ).reduce(
(a,b) => a * b
);
monkey.inspections += monkey.items.length;
monkey.items = monkey.items.map( i => monkey.operation(i) );
monkey.items = monkey.items.map( i => i % max );
monkey.items.forEach( i => {
monkeys[(i % monkey.divisible) ? monkey.ifFalse : monkey.ifTrue
].items.push(i)
} )
monkey.items = [];
return;
};
const playRound = (monkeys) => {
monkeys.forEach( monkey => playTurn(monkeys,monkey) );
return monkeys;
}
export default R.createPipe(
R.clone,
(monkeys) => R.times(10000, () => playRound(monkeys)),
R.last(),
R.map( R.prop('inspections') ),
R.sortBy( R.identity ),
R.reverse,
R.take(2),
R.reduce( (a,b) => a * b, 1 )
)