const fs = require('fs'); const input = fs.readFileSync(__dirname + '/input.txt', 'utf8'); let stones: Array = input.slice(0, -1).split(' '); const countMap: { [key: string]: Array } = {}; let sum = 0; function getCountAfter(stone: string, blink: number) { const newStones: Array = []; 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)); }); if (blink === 1) { return newStones; } return newStones.sum((newStone) => getCountAfter(newStone, blink - 1)); } const blinks = 25; stones.forEach((stone) => { sum += getCountAfter(stone, 25); }); console.log(sum);