0

私は coderbyte でこの問題に取り組んでいます...指示は、arr の数値の配列を取り、配列内の数値の任意の組み合わせを合計して最大 (そうでない場合は false を返します)。たとえば、ArrayAdditionI([4,6,23,10,1,3]) は、4 + 6 + 10 + 3 = 23 であるため、true を返します。

私は次の関数を書きましたが、うまくいくようですが、私が望むほど簡潔ではないと思います。ここで行ったように、ループと追加を使用するだけで、JavaScript の複雑な側面に入ることなく、これをより短く、より適切にする方法があるかどうかを確認したかったのです。どんな提案も大歓迎です...

function ArrayAdditionI(arr) { 

// let's find the largest number

var i,
    j,
    k,
    largest,
    result,
    length = arr.length - 1,
    sorted = [];

sorted = arr.sort(function(a,b) {return a - b});
largest = sorted.pop();

for (i = 0; i < length; i += 1) {
    result = sorted[i];
    if (result === largest) {
        return true;
    }
    for (j = i + 1; j < length; j += 1) {
        result = sorted[i] + sorted[j];
        if (result === largest) {
            return true;
        }
        for (k = j + 1; k < length; k += 1) {
            result = sorted[i] + sorted[j] + sorted[k];
            if (result === largest) {
                return true;
            }
        }
    }
}
return false;
}
4

1 に答える 1