pow — обратная пользовательская функция PHP от опыта к уровню

У меня есть функция, где я ввожу уровень, и он возвращает XP:

это получено из формулы Runescape 1-99:

 function experience($L) {
$a=0;
for($x=1; $x<$L; $x++) {
$a += floor($x+300*pow(2, ($x/7)));
}
return floor($a/4);
}

это означает:

 level 54 would return 150872 XP.

Но как бы я пошел наоборот, чтобы ввести 150872 и вернуть 54?
и каков путь, когда xp может быть 150873, но его уровень 54 все еще может вернуться?

Как бы я подошел?

Предпочтения:

experience(152439) -> 54

-2

Решение

Одно неэффективное, но простое решение — просто непрерывно вызывать функцию опыта в цикле, увеличивая уровень каждый раз, пока вы не достигнете уровня, который возвращает значение опыта выше того, который вы ищете, а затем вернуть уровень до этого:

function level($experience) {
$returned = 0;
$level = 0;

while ($returned <= $experience) {
$level++;
$returned = experience($level);
}

return $level - 1;
}

Демо-версия: http://sandbox.onlinephpfunctions.com/code/820d659feb28a00dd87a21d01bd2414cbc66d300

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]