坚持简单数学算法

时间:2014-01-17 15:36:55

标签: php math

我不记得数学中叫什么,但它不是力量。我正在验证连续的数字顺序。他们总是从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
}

3 个答案:

答案 0 :(得分:2)

公式: n = n(n + 1)/ 2

因此你可以在你的循环中尝试跟随:

if($winnerTotal != $winnerTotal ($winnerTotal + 1 ) / 2){
    $error = true;
}

答案 1 :(得分:2)

第n个三角形数由公式

给出
g(n) = n(n+1)/2

答案 2 :(得分:1)

你可以使用这样的循环:

function sumNum($num){
    $sum = 0 ;
    for($i=1;$i<=$num;$i++){
        $sum += $i;
    }
    return $sum;
}
$sum = sumNum($count);

或者最简单的方法:

$sum = ($count*($count+1))/2;