I am trying to turn an array of numbers into steps of the value of the Non-Zero integer element i.e
spread([0,0,n,0,0] returns =>
[0 + n-2, 0 + n-1, n, 0 +
Somehow "old-school", but seems to work:
let spread = a => {
let add = a.map(_ => 0);
a.forEach((x, i) => {
for (let c = 1; x > 1 && c < a.length; c++, x--) {
add[i + c] += x - 1;
add[i - c] += x - 1;
}
});
return a.map((x, i) => x + add[i]);
};
//
console.log(spread([0, 0, 0, 4, 0, 0, 0]).join())
console.log(spread([0, 0, 0, 3, 0, 2, 0]).join())
console.log(spread([3, 0, 0, 0, 0, 0]).join())