var total = 0;
var transactions = [];
/**This is very important line, it limit the tries to a specific number,
after that, it will consider no combinations**/
var limit_tries = 100000;
function shuffle (numbers){
return numbers.sort((a, b) => 0.5 - Math.random());
}
function getSum(numbers, sum) {
//Sorting the Array
var newArray = numbers.sort((a, b) => a - b);
//Print the Array After Cleaning
while (total != sum && limit_tries > 0){
for (var i=0;i<newArray.length;i++){
if (total<sum){
total = total + newArray[i];
transactions.push(newArray[i]);
}
}
if (total!=sum){
transactions.length = 0;
shuffle(newArray);
total = 0;
limit_tries = limit_tries - 1;
} else if (total=sum){
console.log (transactions);
total= 0;
transactions.length = 0;
limit_tries = 1000000;
break;
}
}
}
//Try 1
getSum([5,1,22,55,12,34,22,12,54,6,5,23,1,2,6,8,22,45,23,33,15,65,12,90,12,7,8,9,1], 99);
//Try 2
getSum([5,1,22,55,12,34,22,12,54,6,5,23,1,2,6,8,22,45,23,33,15,65,12,90,12,7,8,9,1], 99);
//Try 3
getSum([5,1,22,55,12,34,22,12,54,6,5,23,1,2,6,8,22,45,23,33,15,65,12,90,12,7,8,9,1], 99);