Jump Rope Algo
by js_test
JavaScript
const TWO_LBS_DURATION = 2;
const FIVE_LBS_DURATION = 3;
const BASE_INCREMENT_IN_MINUTES = 2;
const MAX_DURATION_IN_MINUTES = 90;
const progression = new Map();
let fiveLbsCeilingReach = null;
for (let i = 1; i < 100; i++) {
if (!progression.size) {
progression.set(i, [TWO_LBS_DURATION, FIVE_LBS_DURATION]);
continue;
}
const [twoLbsDuration, fiveLbsDuration] = progression.get(i - 1);
if (twoLbsDuration + fiveLbsDuration > MAX_DURATION_IN_MINUTES) {
if (!fiveLbsCeilingReach) {
fiveLbsCeilingReach = true
}
}
const twoLbsDurationNextState = twoLbsDuration + BASE_INCREMENT_IN_MINUTES
const fiveLbsNextState = hitFiveLbsCeiling ? fiveLbsDuration - BASE_INCREMENT_IN_MINUTES : fiveLbsDuration + BASE_INCREMENT_IN_MINUTES
/* if (!fiveLbsDuration && twoLbsDuration + fiveLbsDuration > MAX_DURATION_IN_MINUTES) {
fiveLbsDurationCeil = fiveLbsDuration;
}
if (fiveLbsDuration && twoLbsDuration + fiveLbsDuration > MAX_DURATION_IN_MINUTES) {
done = true;
}
const newTwoLbsDuration = twoLbsDuration + BASE_INCREMENT_IN_MINUTES
const newFiveLbsDuration = fiveLbsDurationCeil ? fiveLbsDurationCeil - BASE_INCREMENT_IN_MINUTES : fiveLbsDuration + BASE_INCREMENT_IN_MINUTES
*/
progression.set(i, [newTwoLbsDuration, fiveLbsNextState]);
}
console.log("progression:", Object.fromEntries(progression.entries()));