2010-05-14 4 views
2

나는 다음과 같은 기능이 있습니다수학 문제

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

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

은 위의 기능은 자신의 포인트를 기준으로 플레이어의 레벨을 계산을, 내 문제는 내가 주어진에 필요한 포인트를 계산하기 위해이 같은 기능을 필요로한다 수평.

+11

수락 비율을 20 % 조금 상회하기 위해 수락해야하는 답변 수를 계산하는 것으로 시작하겠습니다. –

+3

얼마나 오래 시도 했습니까? 이것은 고등학교 수준의 수학을 사용하여 풀 수 있어야합니다. –

+0

'Math.floor'를 무시하면 (당신이해야하는 것처럼) 크게 단순화합니다. – Eric

답변

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

+2

그들은 모두 작동해야합니다. 자바 스크립트에서 '^'연산자는 "~의 힘을 키우다"를 의미하지 않는다는 것을 기억하십시오. – Eric

12

그 함수의 역수가 될 것이다 :

( ** 전원 연산자)
points = ((level + 1)**2 - 4) * 20 

.

+0

죄송합니다. 잘 작동합니다 ... – coolboycsaba

+0

은 레벨 10에 2340을 주어야하는데, 이것은 3960을줍니다. – coolboycsaba

+0

어떤 문제가 있습니까? 어떤 언어를 사용하고 있습니까? – 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

단지 점에 대한 해결, 매우 쉽게해야합니다 그래서

   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)