How to add a value in an array to the values before and after it

php get array value by key
array push php
php print array
get specific key value from array php
php add key value to array
php array search multiple values
php add to array with key
php array index

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 + n -1, 0 + n - 2]

spread([0,0,0,n,0,2]) returns => 
[0+n-3, 0+n-2, 0+n-1, n ,(2-1)+(n-1) ,2 + n-2]

spread([0,0,0,4,0,0,0]) returns => [1,2,3,4,3,2,1]

spread([0,0,0,3,0,2,0]) returns => [0,1,2,3,3,3,1]

spread([3,0,0,0]) returns => [3,2,1,0]

etc.

I have tried the traditional for loop, i have tried forEach, even array.map but nothing works as expected

Here is what I tried but it doesn't work

function pop(balloon) {
  let res = [];

  for (let i = 0; i < balloon.length; i++) {

    let n = balloon[i];
    let before = balloon[i - 1];
    let after = balloon[i + 1];

    if (n !== 0 && i < balloon.length - 1) {
      res.push(before + n - 1);
      res.push(n);
      res.push(after + n - 1);

    } else {
      res.push(n);
    }

  }
  return res;
}

const array1 = [0, 0, 0, 0, 4, 0, 0, 3, 0]
const array2 = [0, 0, 2, 0, 0]

console.log(pop(array1)) // returns[0, 0, 0, 0, 3, 4, 3, 0, 0, 2, 3, 2, 0]
// expected output => [0, 1, 2, 3, 4, 4, 4, 4, 2]

console.log(pop(array2)) // returns[0, 0, 1, 2, 1, 0, 0]
// expected output => [0, 1, 2, 1, 0]

You could reduce the array by using a copy of the array and go left and right with a recursive function which checks the value to spread and the index.

function spread(array) {
    return array.reduce((r, v, i, a) => {
        const
            iter = (v, i, d) => {
                if (v < 1 || !(i in a)) return;
                r[i] += v;
                iter(v - 1, i + d, d);
            };
        iter(v - 1, i - 1, -1);
        iter(v - 1, i + 1, 1);
        return r;
    }, array.slice());
}

console.log(...spread([0, 0, 0, 4, 0, 0, 0])); // [1, 2, 3, 4, 3, 2, 1]
console.log(...spread([0, 0, 0, 3, 0, 2, 0])); // [0, 1, 2, 3, 3, 3, 1]
console.log(...spread([3, 0, 0, 0]));          // [3, 2, 1, 0]

How to Add Elements to an Array in JavaScript, There are several ways to add elements to existing arrays in JavaScript, as we First we invoke unshift passing a single argument, then multiple arguments,� We can process each query in constant time using this logic, when a query to add V is given in range [a, b] we will add V to arr[a] and –V to arr[b+1] now if we want to get the actual values of array we will convert the above array into prefix sum array. See below example to understand,

In three steps: 1. Explode the input array in an array of arrays, every containing single non-zero value. 2. Process every of those trivial cases separately. 3. Reduce them back into a single array.

(Not the optimal solution for sure, performance-wise).

const explode = arr => {
   const len = arr.length;

   return arr.map((val, index) => new Array(len)
      .fill(0)
      .map((x, j) => index === j ? val : 0)
   );
}

const pop = arr => {
   const nonZeroIndex = arr.findIndex(x => !!x);
   const nonZeroValue = arr.find(x => !!x);

   return nonZeroIndex !== -1 ?
      arr.map((x, i) => Math.max(0, nonZeroValue - Math.abs(i - nonZeroIndex))) :
      arr;
}

const sum2Arrays = (arrA, arrB) => arrA.map((x, i) => x + arrB[i]);
const sumArrays = arrs => arrs.reduce(sum2Arrays, Array(arrs[0].length).fill(0));

const spread = (arr) => sumArrays(explode(arr).map(pop));

console.log(spread([0, 0, 0, 0, 4, 0, 0, 3, 0]));

array_push - Manual, If you want to add elements to the END of an associative array you should use Note that like array_push (but unlike $array[] =) the array must exist before the� Resize an Image Using Canvas, Drag and Drop and the File API. Recently I was asked to create a user interface that allows someone to upload an image to a server (among other things) so that it could be used in the various web sites my company provides to its clients.

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())

array - Manual, Syntax "index => values", separated by commas, define index and values. index may be of type string or $arr['B'] = [ // declare array, insert key and then value Replace Values That Meet a Condition. Sometimes it is useful to simultaneously change the values of several existing array elements. Use logical indexing with a simple assignment statement to replace the values in an array that meet a condition. Replace all values in A that are greater than 10 with the number 10.

One fairly simple technique, if not the most efficient, is to create a square grid with a row for each value, either all zeros or descending from a single non-zero value as described and then simply add the columns.

Here is my version:

const pop = arr => arr.map(
  (n, i) => n == 0 
    ? Array(arr.length).fill(0) 
    : arr.map((_, j) => Math.max(n - Math.abs(j - i), 0))
).reduce((as, bs) => as.map((a, i) => a + bs[i]))

console.log(...pop([0, 0, 2, 0, 0]))             //~> [0, 1, 2, 1, 0]
console.log(...pop([3, 0, 0, 0]))                //~> [3, 2, 1, 0]
console.log(...pop([0, 0, 0, 3, 0, 2, 0]))       //~> [0, 1, 2, 3, 3, 3, 1]
console.log(...pop([0, 0, 0, 4, 0, 0, 0]))       //~> [1, 2, 3, 4, 3, 2, 1]
console.log(...pop([0, 0, 0, 0, 4, 0, 0, 3, 0])) //~> [0, 1, 2, 3, 4, 4, 4, 4, 2]

[PDF] An Introduction to Arrays and Array Processing, elements. Once the basics of array processing are understood arrays are a simple within an array structure, and then the array could provide a location to look up instance, to calculate rate we must add the value in the array reference to� An algorithm used to find a value in an array is called a _____. search Our searching algorithm returns the element that we're searching for, rather than the index of the element we're searching for.

Documentation: 9.1: Arrays, As before, however, PostgreSQL does not enforce the size restriction in any case. To write an array value as a literal constant, enclose the element values within You can put double quotes around any element value, and must do so if it� 1- Add k-value to only lower_bound of a range. 2- Reduce upper_bound + 1 index by k-value. After all operations, add all values, check the maximum sum and print maximum sum.

about_Arrays, Creating and initializing an array When no data type is specified, PowerShell creates each array as an object array You can refer to the elements in an array by using an index, You can also get the members of an array by typing a comma (,) before the value that is piped to the Get-Member cmdlet. The way to add a new element to an existing array is to use the += operator as shown here. $a += 12 The commands to create an array, get the upper boundary of an array, change an element in an array, and add a new element to an array are shown here with their associated output. Searching for a specific value in an array

Collection Types — The Swift Programming Language (Swift 5.3), This means that you cannot insert a value of the wrong type into a collection by mistake. If you create an array, a set, or a dictionary, and assign it to a variable, the Because all values in the array literal are of the same type, Swift can infer that an index is valid before using it by comparing it to the array's count property. E nter values in elements. Step 3: Select the location where you want to insert the values in the elements. Step 4: Enter the value to insert into the element. Step 5: Display result values. Program of the insert of an element in an array at a specific position in C++ (C Plus Plus, CPP)

Comments
  • Hows spread([3,0,0,0]) returns => [3,2,1,0] are mirror?
  • Definitely need to explain what mirror means in more detail because it's not intuitive from what is shown
  • You had me until spread([0,0,0,3,0,2,0]) returns => [0,1,2,3,3,3,1] which doesn't follow the suggested pattern at all.
  • @DMishra it returns [3,2,1,0] because that'll be [n, 0 + n-1, 0 + n - 2, 0]. Last element is zero because at that point, n - 3 = 0
  • @Mike'Pomax'Kamermans it is the same pattern, the zero before the 2 becomes 1 and since that zero is also after 3, 3 - 1 = 2 + 1 which was gotten from the 2 , that makes it 3. Also , the second index after 3 will be 3 - 2 = 1 + 2 that is already in that index, that makes it 3, and the 1 is gotten with the n - 1 formula i.e 2 -1 = 1
  • But please can you clarify what the letter 'd' represents in your first approach
  • d is direction or delta, which has the value for adding to the index and has the value of 1 for going to end of the array or -1 for going to the start of the array.
  • @NinaScholz: Yes. As I said, this is not the most efficient, either in time or space, but it's quite simple. More efficient would be to not build the arrays in the case of a zero, but this was quick and easy to write and to read.
  • @NinaScholz: Added a variant based on this comment.
  • Thank you for this, never thought about it this way
  • we should wait some more days ... :-)
  • @NinaScholz: I figure by early 2021 I should have this entirely figured out! :-)