Я решаю эту проблему на coderbyte ... инструкции должны определять функцию ArrayAdditionI (arr), которая принимает массив чисел в arr и возвращает true, если любая комбинация числа в массиве могут быть добавлены до равных наибольшим (в противном случае возвращает false). Например, ArrayAdditionI ([4,6,23,10,1,3]) возвращает true, потому что 4 + 6 + 10 + 3 = 23.Добавление всех комбинаций чисел из массива
Я написал следующую функцию и, похоже, работает, хотя я не думайте, что это довольно сжато, как мне бы хотелось. Я хотел посмотреть, есть ли способ сделать это короче и слаще, не вникая в какие-либо сложные аспекты 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;
}
Рассмотрим размещение в http://codereview.stackexchange.com – user2736012