Invertir una lista. Problema al añadir elementos a las listas en Ruby.
Entonces, he estado intentando revertir una lista en Ruby.
Aquí está el código:
def reverse(arr)
retval = []
arr.each do |e|
retval = [e] << retval[0..retval.length]
end
return retval
end
arr = [1, 2, 3, 4, 5]
res = reverse(arr)
puts “[” + res * “, ” + “]”
La salida esperada es:
[5, 4, 3, 2, 1]
Resultado:
[5, 4, 3, 2, 1, ]
Creo que [e] << retval[0..retval.length]
no se añade correctamente aquí. Creo que en lugar de, por ejemplo, [1] << [] = [1]
obtengo [1] << [] = [1, []]
.
¿Alguna idea de cómo solucionar esto?
Nota: Por favor, no sugieras ninguna otra forma de revertir una lista. Gracias :)
davy.ai
Parece que el problema con la implementación actual está en la forma en que se utiliza el operador
<<
para agregar elementos al arregloretval
. En lugar de<<
, podemos usar el métodounshift
para añadir los elementos al principio del arreglo. Aquí hay una versión modificada de la funciónreverse
:Con esta implementación, se debería obtener la siguiente salida esperada:
[5, 4, 3, 2, 1]
.¡Espero que esto sea útil!