Code challenge: Product of all numbers except the one at i.

En este post te voy a explicar como resolví el siguiente challenge:

«Given an array of integers, return a new array such that each element at index i of the new array is the product of all the numbers in the original array except the one at i»

¿En qué consiste el problema?

Dado un arreglo de números enteros, se debe producir un arreglo del mismo tamaño, que contenga el producto de todos los demás números, excepto del número del índice del número actual.

Por ejemplo: Un arreglo [2,3,4,5]

Va a producir otro arreglo así: [60,40,30,24]

Donde:

  1. arr[0] = 3 * 4 * 5
  2. arr[1]  = 2 * 4 * 5
  3. arr[2] = 2 * 3 * 5
  4. arr[3] = 2 * 3 * 4

Primeros pasos.

Este problema es fácil de resolver por fuerza bruta. La dificultad de este está en encontrar una solución no lineal. El siguiente ejemplo muestra como se uso programación dinámica para almacenar las soluciones temporales. Si te fijas en los números del listado anterior, muchos de ellos se repiten en posición. Puedes soluciones parciales del problema para resolver el ejercicio en su totalidad.

Solución.


 

Gustavo Sánchez