2015-01-31 5 views
0

그래서 필자가 작성한 프로그램의 속도 등급을 기준으로 공격 제한 시간을 설정하고 있지만 수학에 있어서는 천재가 아닙니다. 그것은 내가 가지고있는 공식이므로 speed = lambda x: x/50 기본 속도 등급은 100으로 기본 설정되어 있으므로 매 초마다 공격이 발생합니다 (speed(100)). 이제 내가 원하는 것은 더 높은 속도 등급에서 공격이 더 빠르게 발생하고 더 낮은 속도 등급에서 느리게 발생한다는 것입니다. 나는. speed(98)은 2보다 높은 값을 반환하지만 speed(101)은 2보다 낮은 값을 반환합니다.이 숫자는 단지 예일 뿐이지 만 주된 요점은 더 높은 기본 숫자를 기준으로 더 낮은 숫자를 반환 할 수있는 공식입니까?괴상한 수학 공식을 알아 내려고 노력했습니다.

예 : speed(101); returns x < yspeed(98); returns x > y Y 되 상수 같은 2

답변

1

방법 :

def speed(score, attacks_per_second): 
    """ 
    computes actual attack speed for a player with `score`, 
    assuming a player with a score of 100 could attack at 
    `attacks_per_second`. Lower scores are better. 
    """ 
    return attacks_per_second * (100/score) 
>>> speed (100, 2) 
2.0 
>>> speed (120, 2) 
1.6666666666666667 
>>> speed (80, 2) 
2.5 

편집 : 처음 오독 이후 및 당신은 더 높은 점수를 원한다면 더 낮은 스피드를주고, 100/스코어를 스코어/100으로 반전하십시오. 원래는 여기에 보존되어 단지 부문의

def speed_inverse(score, attacks_per_second): 
    """ 
    as above, but higher scores are better 
    """ 
    return attacks_per_second * (score/100) 
>>> speed (120, 2) 
2.4 
>>> speed (80, 2) 
1.6 
+0

내가 바르게 읽고 있다면 원하는 관계가 거꾸로되어 있습니다. – DSM

+0

@dsm : 나는 네가 옳다고 생각한다. 이제 나는 그가 생각하는 것부터 모두 가지고있다. – SingleNegationElimination

+0

실제로 처음에는 맞았습니다 – riyoken

1

합니다. :)

attack_delay = 200/speed 

이제 speed = 100으로 공격하는 데 2 ​​초가 걸릴 것입니다. speed = 50으로 공격하는 데 4 초가 걸립니다. speed = 200은 초당 공격을 1 회 제공합니다.

관련 문제