"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const process_1 = require("process"); class LanternFish { constructor(_days) { this.isNew = false; this.justBirthed = false; this.days = _days; this.isNew = true; this.justBirthed = false; } eligibileForNewFish() { return this.days == 0; } passDay() { if (this.isNew) { this.isNew = false; return; } if (this.justBirthed) { this.justBirthed = false; return; } this.days--; } createNew() { this.days = 6; this.justBirthed = true; return new LanternFish(8); } } function createBaseFishPopulation(baseDays) { const fish = baseDays.map(x => new LanternFish(x)); fish.map(x => x.isNew = false); return fish; } function simulateDay(fish) { const newFish = fish.filter(x => x.eligibileForNewFish()).map(x => x.createNew()); const fishesToHandle = [...fish, ...newFish]; fishesToHandle.forEach(x => x.passDay()); return fishesToHandle; } function iterateOverGivenDaySpan(days, fish) { for (let i = 0; i < days; i++) { fish = simulateDay(fish); console.log(`Day ${i + 1}|Fishes: ${fish.length}`); } return fish; } function printAllFishDays(fish) { return fish.days.toString(); } function main() { console.log(JSON.stringify(process_1.argv)); if (process_1.argv[2] && process_1.argv[2] != "") { const values = (0, fs_1.readFileSync)(process_1.argv[2], "utf8"); const inputs = values.replace('\n', '').split(',').map(x => parseInt(x)); let fish = createBaseFishPopulation(inputs); fish = iterateOverGivenDaySpan(256, fish); console.log(`Fishes ${fish.length}`); } else { console.log("No filename"); (0, process_1.exit)(); } } main(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQkFBaUM7QUFDakMscUNBQW9DO0FBRXBDLE1BQU0sV0FBVztJQUloQixZQUFZLEtBQWE7UUFGekIsVUFBSyxHQUFZLEtBQUssQ0FBQTtRQUN0QixnQkFBVyxHQUFZLEtBQUssQ0FBQTtRQUUzQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQTtJQUN6QixDQUFDO0lBQ0QsbUJBQW1CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUE7SUFDdEIsQ0FBQztJQUNELE9BQU87UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtZQUNsQixPQUFNO1NBQ047UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7WUFDeEIsT0FBTTtTQUNOO1FBQ0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ1osQ0FBQztJQUNELFNBQVM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3ZCLE9BQU8sSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUIsQ0FBQztDQUNEO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxRQUFrQjtJQUNuRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQTtJQUM5QixPQUFPLElBQUksQ0FBQTtBQUNaLENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxJQUFtQjtJQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUNqRixNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUE7SUFDNUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLE9BQU8sY0FBYyxDQUFBO0FBQ3RCLENBQUM7QUFDRCxTQUFTLHVCQUF1QixDQUFDLElBQVksRUFBRSxJQUFtQjtJQUNqRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzlCLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7S0FDbEQ7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNaLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLElBQWlCO0lBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtBQUM1QixDQUFDO0FBQ0QsU0FBUyxJQUFJO0lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQUksQ0FBQyxDQUFDLENBQUE7SUFDakMsSUFBSSxjQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFBLGlCQUFZLEVBQUMsY0FBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN4RSxJQUFJLElBQUksR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUUzQyxJQUFJLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtLQUNwQztTQUFNO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUMxQixJQUFBLGNBQUksR0FBRSxDQUFBO0tBQ047QUFDRixDQUFDO0FBQ0QsSUFBSSxFQUFFLENBQUEifQ==