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()));