我有2个配置文件的数据,我想比较。
每个配置文件都有一个'总积分'值和一个'每日积分'值,我想计算野兔超过乌龟需要多少天。
$hare_points = 10000;
$hare_ppd = 700;
$tortoise_points = 16000;
$tortoise_ppd = 550;
确定野兔赶上乌龟需要多少天的最有效方法是什么?我的第一个过程是运行一个循环来计算整天,但很快就意识到必须有一个有效的算法,不想破坏它在lol上运行的服务器
答案 0 :(得分:2)
这是一组简单的方程式来解决。
hare_total = hare_points + hare_ppd * days
tortoise_total = tortoise_points + tortoise_ppd * days
你试图找出积分相同的那一天,所以:
hare_total = tortoise_total
hare_points + hare_ppd * days = tortoise_points + tortoise_ppd * days
hare_points - tortoise_points = (tortoise_ppd - hare_ppd) * days
所以有你的答案:
$days = ($hare_points - $tortoise_points) / ($tortoise_ppd - $hare_ppd)
只需将其插入到您的函数中,然后向上/向下舍入到整数,具体取决于您想要解释答案的方式。
答案 1 :(得分:2)
假设ppd是每天的分数:
<?php
$hare_points = 10000;
$hare_ppd = 700;
$tortoise_points = 16000;
$tortoise_ppd = 550;
$hare_diff = $tortoise_points - $hare_points;
$hare_ppd_diff = abs($tortoise_ppd - $hare_ppd);
$days = $hare_diff/$hare_ppd_diff;
echo $days; // 40
/* Test:
* 40 * 700 = 28000; hare
* 40 * 550 = 22000; tortoise
*
* hare_p = 28000 + 10000 = 38 000
* toit_p = 22000 + 16000 = 38 000
*
* So the math is right. On 40th day, they are equal
*
*/