2010-05-14 9 views
2

je la fonction suivante:problème mathématique

function getLevel(points) 
{ 
    var level = -1 + Math.sqrt(4 + points/20); 

    // Round down to nearest level 
    return Math.floor(level); 
} 

La fonction ci-dessus calcule le niveau d'un joueur en fonction de leurs points, mon problème est que je besoin d'une fonction comme celui-ci pour calculer les points nécessaires pour une donnée niveau.

+11

Commençons par calculer le nombre de réponses que vous devez accepter d'augmenter votre taux d'acceptation un peu plus de 20% allons-nous? –

+3

Combien de temps avez-vous essayé? Cela devrait être résolu en utilisant des mathématiques de niveau secondaire. –

+0

Ignorer le 'Math.floor' (comme vous devriez) simplifie grandement les choses. – Eric

Répondre

4
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 
+0

merci, celui-ci a travaillé: points = 20 * niveau * niveau + 40 * niveau - 60; – coolboycsaba

+2

Ils devraient tous fonctionner. Rappelez-vous simplement que dans javascript, l'opérateur '^' ne signifie pas "augmenter à la puissance de". – Eric

12

L'inverse de cette fonction serait:

points = ((level + 1)**2 - 4) * 20 

(où ** est l'opérateur de puissance).

+0

désolé, mais ce n'est pas fonctionne bien ... – coolboycsaba

+0

pour le niveau 10, il devrait donner 2340, cela donne 3960 – coolboycsaba

+0

Qu'est-ce qui ne fonctionne pas? Quelle langue utilisez-vous? – nevets1219

6
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 
1

20 (L + 1) - 80

2

devrait être assez facile, résoudre juste pour les points:

   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 

donc:

points = 20 * (Math.pow(level + 1, 2) - 4)