expeditaet
Version:
Advent of Code Solutions
31 lines (27 loc) • 729 B
text/typescript
import { task } from '@alexaegis/advent-of-code-lib';
import packageJson from '../package.json';
class LanternFish {
constructor(public timer = 8) {}
next(): LanternFish | undefined {
if (this.timer === 0) {
this.timer = 6;
return new LanternFish();
} else {
this.timer--;
return undefined;
}
}
}
export const p1 = (input: string, maxDay = 80): number => {
const fishes = input.splitToInt({ delimiter: /,/ }).map((time) => new LanternFish(time));
let day = 0;
while (day < maxDay) {
const next = fishes
.map((fish) => fish.next())
.filter((next): next is LanternFish => !!next);
fishes.push(...next);
day++;
}
return fishes.length;
};
await task(p1, packageJson.aoc); // 361169 ~118.92ms