2010-05-14 101 views
2

我有以下功能:數學問題

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

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

上述函數根據自己的積分選手的水平,我的問題是,我需要這樣的功能來計算所需要的特定點水平。

+11

讓我們開始計算您需要接受多少答案,以提高您的接受比率略高於20%? – 2010-05-14 22:00:21

+3

你試了多久?這應該可以用高中數學來解決。 – 2010-05-14 22:02:34

+0

忽略'Math.floor'(如你應該)大大簡化了事情。 – Eric 2010-05-14 22:04:32

回答

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

謝謝,這一個工作:分= 20 *級*級+ 40 *級 - 60; – coolboycsaba 2010-05-14 22:15:57

+2

他們都應該工作。請記住,在JavaScript中,'^'操作符不會*意味着「提高權力」。 – Eric 2010-05-24 17:45:40

12

該函數的逆將是:

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

(其中**是冪運算符)。

+0

對不起,但這不是工作很好... – coolboycsaba 2010-05-14 22:04:07

+0

級別10它應該給2340,這給3960 – coolboycsaba 2010-05-14 22:04:50

+0

什麼不工作?你在用什麼語言? – nevets1219 2010-05-14 22:05:32

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

應該是相當容易,只是解決點:

   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 

所以:

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