project_vector = (x) => {
let n = x.length;
let alpha;
let x_sorted = x.slice().sort((a,b) => b-a);
let sum = 0;
for (const j of x_sorted.keys()) {
sum += x_sorted[j];
alpha = (1 - sum)/(1 + j);
if (x_sorted[j+1] <= -alpha) {
break;
}
}
let y = x.map((x_j) => x_j >-alpha? x_j+alpha : 0);
return y;
}