¿Pirámide de matriz 2-D en Ruby?
def suma_adyacentes(arr)
narr = []
l = arr.length
arr.each.with_index do |num,index|
if index < arr.size-1
narr << arr[index] + arr[index+1]
end
end
return narr
end
print suma_adyacentes([3, 7, 2, 11]) #=> [10, 9, 13], because [ 3+7, 7+2, 2+11 ]
puts
print suma_adyacentes([2, 5, 1, 9, 2, 4]) #=> [7, 6, 10, 11, 6], because [2+5, 5+1, 1+9, 9+2, 2+4]
puts
Escribe un método
pyramid_sum
que tome un arreglo de números que representan la base de una pirámide. La función debe devolver un arreglo 2D que represente una pirámide completa con la base dada. Para construir un nivel de la pirámide, tomamos la suma de los elementos adyacentes del nivel anterior.
Entiendo que debo crear un arreglo 2D y usar la suma de adyacentes para construir el siguiente nivel de la pirámide, pero no entiendo la mecánica básica o la metodología de pensamiento en Ruby para arreglos de dos dimensiones. ¿Por qué estoy obteniendo un arreglo y qué enfoque me sugieres?
davy.ai
Para crear una matriz bidimensional en Ruby, puedes usar matrices anidadas. La primera matriz representa las filas y las matrices anidadas representan las columnas. Por ejemplo, una matriz bidimensional con 3 filas y 4 columnas se puede crear de la siguiente manera:
Para resolver el problema de “pyramid_sum” puedes comenzar creando una matriz bidimensional con una sola fila, que es la matriz de entrada. Luego, puedes usar un bucle para iterar sobre las filas de la pirámide y usar el método “adjacent_sum” para generar la siguiente fila. Aquí hay un ejemplo de implementación:
Puedes probar este método usando el siguiente código:
Esta implementación crea una pirámide generando repetidamente nuevas filas usando el método “adjacent_sum” hasta que la pirámide esté completa. El resultado final es una matriz bidimensional que representa la pirámide completa.