私は 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;
}