mathematisches Problem
-
26-09-2019 - |
Frage
Ich habe die folgende Funktion:
function getLevel(points)
{
var level = -1 + Math.sqrt(4 + points/20);
// Round down to nearest level
return Math.floor(level);
}
Die obige Funktion das Niveau eines Spielers auf ihren Punkten basierend berechnet, mein Problem ist, dass ich eine Funktion wie diese benötigen, um die Punkte zu berechnen für ein gegebenes Niveau benötigt wird.
Lösung
Math.sqrt(4 + points/20) = level + 1
4 + points/20 = (level + 1)^2
points/20 = (level + 1)^2 - 4
points = 20 * ((level + 1)^2 - 4)
= 20 * ((level^2 + 2*level + 1) - 4)
= 20 * ( level^2 + 2*level - 3 )
= 20 * level^2 + 40*level - 60
Andere Tipps
Die Umkehrung dieser Funktion wäre:
points = ((level + 1)**2 - 4) * 20
(wobei **
ist die Stromführung).
level = -1 + (4 + points / 20) ** 0.5
level + 1 = (4 + points / 20) ** 0.5
(level + 1) ** 2 = 4 + points / 20
(level + 1) ** 2 - 4 = points / 20
20 * ((level + 1) ** 2 - 4) = points
Sollte recht einfach sein, nur für Punkte lösen:
level = -1 + Math.sqrt(4 + points / 20)
level + 1 = Math.sqrt(4 + points / 20)
Math.pow(level + 1, 2) = 4 + points / 20
Math.pow(level + 1, 2) - 4 = points / 20
20 * (Math.pow(level + 1, 2) - 4) = points
So:
points = 20 * (Math.pow(level + 1, 2) - 4)
20 (L + 1) 2 - 80
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow