我不记得这在数学中叫什么了,虽然它不是幂。我正在验证连续的数字顺序。它们总是从 1 开始,也可以到 3。我真的只有 3 个条件。
所以我的解决方案是:
$sum = array_sum($group);
count: 1 = (Result) 1
count: 2 = (Result) 3 (1 + 2)
count: 3 = (Result) 6 (1 + 2 + 3)
但是,我想将这 3 个 if 语句的脂肪修剪成更简单的东西,你能帮我那个数学算法吗?
$winnerCount = [
[1, 3]
];
foreach ($winnerCount as $_key => $_group)
{
$winnerTotal = count($_group);
$sum = array_sum($winnerCount[$_key]);
if ($winnerTotal == 1 && $sum != 1) {
$error = true;
}
if ($winnerTotal == 2 && $sum != 3) {
$error = true;
}
if ($winnerTotal == 3 && $sum != 6) {
$error = true;
}
echo $sum;
}
我想这个晴朗的下午我需要喝点咖啡。
我想我可以做这样的事情:
$result = [
1 => 1,
2 => 3,
3 => 6
];
if ($winnerTotal != $result[$winnerTotal]) {
$error = true
}
第 n 个三角形数由公式给出
g(n) = n(n+1)/2
公式:n = n(n+1)/2
因此,您可以在循环中尝试以下操作:
if($winnerTotal != $winnerTotal ($winnerTotal + 1 ) / 2){
$error = true;
}
你可以使用这样的循环:
function sumNum($num){
$sum = 0 ;
for($i=1;$i<=$num;$i++){
$sum += $i;
}
return $sum;
}
$sum = sumNum($count);
或最简单的方法:
$sum = ($count*($count+1))/2;