Get reverse of an equation – JavaScript

  • A+
Category:Languages

Let's say I have this formula, for example:

function getExperience(level) {   let a = 0;   for (let x = 1; x < level; x += 1) {     a += Math.floor(x + (200 * (2 ** (x / 3))));   }    return Math.floor(a / 4); }   for (var i = 1; i < 100; i++) {   console.log(`Level ${i}: ${getExperience(i)}`); }

To get the experience needed for level 50, you'd do: getExperience(50).

But, how would you reverse that and get the LEVEL needed for experience? So, getLevel(20010272) would output 50.

 


A brute-force (but inelegant) solution would be to just call getExperience for levels until you reach a level that requires more experience than the passed exp:

function getLevel(exp) {   let level = 0;   let calcExp = 0;   while (exp > calcExp) {     calcExp = getExperience(level);     if (calcExp >= exp) break;     level++;   }   return level; }  console.log(getLevel(20012272)); // experience required for 50 on the dot console.log(getLevel(20012270)); console.log(getLevel(20012274));  function getExperience(level) {   let a = 0;   for (let x = 1; x < level; x += 1) {     a += Math.floor(x + (200 * (2 ** (x / 3))));   }    return Math.floor(a / 4); }

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: