我有一组数字,目的是计算排列的概率,我需要比较结果。
1| 974407 |
|---------|--------|
2| 97440x | x74407 |
3| 9744xx | xx4407 |
4| 974xxx | xxx407 |
5| 97xxxx | xxxx07 |这是我想比较的信息的格式。它是数组格式的。该信息是从其他网站爬来的,订单不能更改。
$data = [974407,97440,74407,9744,4407,974,407,97,07]我要知道军衔。例如:
974123 - rank 4
197400 - no rank
974123 - is not rank 5更新
感谢mephisto123发布了代码示例,下面是我如何调用它的方式。我真的不擅长数学,当我调用URL时,我也不知道为什么会返回-1。
http://localhost:8000/rank/974123我也需要从函数中得到排名。
public function theRank($value){
$data = [974407,97440,74407,9744,4407,974,407,97,07];
$rank = Helper::GetRank($data, $value);
echo $value . " = " . $rank;
}发布于 2015-05-03 13:41:49
function GetRank($data, $value)
{
if ($value == $data[0]) return 1;
$digits = strlen(strval($value));
$len = sizeof($data);
for ($i = 1, $div = 10, $mod = pow(10, $digits - 1); $i < $len; $i += 2, $div *= 10, $mod /= 10) {
if ($data[$i] == intval($value / $div)) break;
if ($data[$i + 1] == intval($value % $mod)) break;
}
if ($i >= $len) return -1;
return ($i + 3) >> 1;
}发布于 2015-05-03 13:32:58
我认为你应该做的是在数组上循环,并使用模和除法运算符得到不同的数字集,然后将它们与另一个数组进行比较,该数组持有不同的等级,以得到该特定数字的秩。
例如,974123 / 1000将得到974作为结果,您可以将其与一个包含不同等级模板的数组进行比较,并获得该数字的位置,这将构成排名。
https://stackoverflow.com/questions/30014329
复制相似问题