Files
AoC/2024/11/index.ts

41 lines
987 B
TypeScript
Raw Normal View History

2024-12-11 15:03:26 +00:00
const fs = require('fs');
const input = fs.readFileSync(__dirname + '/input.txt', 'utf8');
let stones: Array<string> = input.slice(0, -1).split(' ');
2024-12-11 15:37:44 +00:00
const countMap: { [key: string]: Array<number> } = {};
2024-12-11 15:03:26 +00:00
let sum = 0;
2024-12-11 15:37:44 +00:00
function getCountAfter(stone: string, blink: number) {
2024-12-11 15:03:26 +00:00
const newStones: Array<string> = [];
stones.forEach((stone) => {
if (stone === '0') {
newStones.push('1');
return;
}
const len = stone.length;
if (len % 2 === 0) {
newStones.push(stone.slice(0, len / 2));
let last = stone.slice(len / 2);
newStones.push(''+(parseInt(last)));
return;
}
newStones.push(''+(parseInt(stone) * 2024));
});
2024-12-11 15:37:44 +00:00
if (blink === 1) {
return newStones;
}
return newStones.sum((newStone) => getCountAfter(newStone, blink - 1));
2024-12-11 15:03:26 +00:00
}
const blinks = 25;
2024-12-11 15:37:44 +00:00
stones.forEach((stone) => {
sum += getCountAfter(stone, 25);
});
2024-12-11 15:03:26 +00:00
2024-12-11 15:37:44 +00:00
console.log(sum);
2024-12-11 15:03:26 +00:00