坚持简单的数学算法



我不记得这在数学中叫什么了,虽然它不是幂。我正在验证连续的数字顺序。它们总是从 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;

最新更新