100 lines
2.2 KiB
JavaScript
100 lines
2.2 KiB
JavaScript
/**
|
|
* Totalt dager
|
|
*/
|
|
let days = 0;
|
|
|
|
/**
|
|
* Hvor mange dager på rad som dragen har spist for lite.
|
|
*/
|
|
let daysInRow = 0;
|
|
|
|
/**
|
|
* Dragens nåværende størrelse
|
|
*/
|
|
let currentSize = 50;
|
|
|
|
/**
|
|
* Resterende sauer per dag.
|
|
*/
|
|
let leftover = 0;
|
|
|
|
/**
|
|
* Bruk testfil for å verifisere at tallene blir riktig
|
|
*/
|
|
let filename = '1-sau.txt';
|
|
if (process.argv[2])
|
|
{
|
|
filename = '1-test.txt';
|
|
console.log('Bruker testfil');
|
|
}
|
|
|
|
/**
|
|
* Les inn fil og konverter den til et array av tall.
|
|
*/
|
|
const file = require('fs').readFileSync(`inputs/${filename}`, 'utf8');
|
|
const sheepTotal = file.split(', ').map(x => parseInt(x, 10));
|
|
|
|
function log(text)
|
|
{
|
|
console.log(`[Dag ${days}] ${text}`);
|
|
}
|
|
|
|
for (let sheep of sheepTotal)
|
|
{
|
|
/**
|
|
* Totalt antall sauer basert på dagens sauer +
|
|
* resterende sauer fra tidligere
|
|
*/
|
|
sheep = sheep + leftover;
|
|
|
|
/**
|
|
* Inkrementer antall dager
|
|
*/
|
|
days++;
|
|
|
|
/**
|
|
* Dragen spiser nok sauer og vokser 1 størrelse
|
|
*/
|
|
if (currentSize === sheep)
|
|
{
|
|
currentSize++;
|
|
daysInRow = 0;
|
|
leftover = 0;
|
|
log(`Dragon spiser nok ${sheep} og vokser en størrelse (${currentSize})`);
|
|
continue;
|
|
}
|
|
|
|
/**
|
|
* Dragen spiser nok sauer, vokser 1 størrelse
|
|
* og resterende sauer overføres til neste dag.
|
|
*/
|
|
if (currentSize < sheep)
|
|
{
|
|
daysInRow = 0;
|
|
leftover = sheep - currentSize;
|
|
currentSize++;
|
|
log(`Dragen spiser nok (${sheep}) og vokser en størrelse (${currentSize}) - ${leftover} sau(er) overført til neste dag.`);
|
|
continue;
|
|
}
|
|
|
|
/**
|
|
* Det er ikke nok sauer og dragen krymper en størrelse
|
|
*/
|
|
currentSize--;
|
|
leftover = 0;
|
|
|
|
/**
|
|
* Antall dager på rad blir inkrementert
|
|
* `daysInRow` blir satt tilbake til 1 om dragen vokser.
|
|
*/
|
|
daysInRow++;
|
|
|
|
if (daysInRow === 5) {
|
|
log(`Dragen spiser for lite mat (${sheep}) for femte dag på rad og spiser alle.`);
|
|
break;
|
|
}
|
|
|
|
log(`Dragen spiser for lite mat (${sheep}) og krymper en størrelse.`);
|
|
}
|
|
|
|
console.log(`Befolkningen på øya overlevde i ${days - 1} dager.`); |