69 lines
5.0 KiB
JavaScript
69 lines
5.0 KiB
JavaScript
|
"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==
|