2020aoc/day15.ts

33 lines
855 B
TypeScript

const input = "0,8,15,2,12,1,4";
// const input = "3,1,2";
const numberAt2020 = 30000000;
// const numbers = input.split(',').map(parseInt); // does not work
const numbers = input.split(',').map(a => parseInt(a));
const numberAge = new Map<number, number>();
numbers.forEach((e, i) => numberAge.set(e, i));
let currentNumber = 0; // initial numbers are unique
let nextNumber: number;
let count = numbers.length;
do {
if (numberAge.has(currentNumber)) {
// @ts-ignore
nextNumber = count - numberAge.get(currentNumber);
numberAge.set(currentNumber, count);
} else {
nextNumber = 0;
numberAge.set(currentNumber, count);
}
count += 1;
if (count < numberAt2020) {
currentNumber = nextNumber;
}
} while (count < numberAt2020);
const endTime = new Date();
console.log(currentNumber);