function getDistinct4Elements(arr : any, sum : number) {
arr.sort(function(a : number, b : number) {return a - b;});
const size = arr.length;
for (let i = 0; i <= size - 4; i++) {
for (let j = i + 1; j <= size - 3; j++) {
const k = sum - (arr[i] + arr[j]);
let fromstart = j + 1;
let fromend = size - 1;
while (fromstart < fromend) {
if (arr[fromstart] + arr[fromend] < k) {
fromstart++;
}
else if (arr[fromstart] + arr[fromend] > k) {
fromend--;
}
else {
console.log(arr[i] + " " + arr[j] + " " + arr[fromstart] + " " + arr[fromend]);
fromstart++;
fromend--;
}
}
}
}
}
const arr:number[] = [4, 8, 1, 5, 9, 0, 3, 7];
const sum = 18;
getDistinct4Elements(arr, sum);
/*
run:
"0 1 8 9"
"0 3 7 8"
"0 4 5 9"
"1 3 5 9"
"1 4 5 8"
*/