/**
|
*
|
*
|
*
|
*
|
* */
|
function* countPropagate(initialNumber, infectedRate, uptoMinute=Number.MAX_SAFE_INTEGER) {
|
let minute = 0;
|
let f = initialNumber ;
|
while(minute <= uptoMinute) {
|
yield [minute, Number.parseInt(f.toFixed()), f];
|
f = f * infectedRate;
|
++minute;
|
}
|
}
|
|
function showInfectedState(state, target) {
|
const stateAsString = state.join(" ") + "\n";
|
const tmp = target.innerText;
|
target.innerText = stateAsString + tmp;
|
}
|
|
function calculate(target) {
|
const LAST_MINUTE = 10;
|
const initial = Number.parseInt(document.getElementById("init").value);
|
const rate = Number.parseFloat(document.getElementById("rate").value);
|
const cashOrCrash = countPropagate(initial, rate);
|
|
for( let i = 0; i <= LAST_MINUTE; ++i ) {
|
const infectedState = cashOrCrash.next()
|
showInfectedState(infectedState.value, target);
|
}
|
return cashOrCrash;
|
}
|
|
document.addEventListener("DOMContentLoaded", () => {
|
const target = document.getElementById("state");
|
let cashOrCrash = calculate(target);
|
document.getElementById("reset").addEventListener("click", ()=> {
|
target.innerText = "";
|
cashOrCrash = calculate(target);
|
});
|
|
document.getElementById("more").addEventListener("mousedown", () => {
|
const nextState = cashOrCrash.next();
|
if(nextState.done) {
|
console.log("DONE");
|
} else {
|
showInfectedState(nextState.value, target);
|
}
|
});
|
});
|