es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , ,

Answer

  1. Avatar for 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 arreglo retval. En lugar de <<, podemos usar el método unshift para añadir los elementos al principio del arreglo. Aquí hay una versión modificada de la función reverse:

    def reverse(arr)
      retval = []
      arr.each do |e|
        retval.unshift(e)
      end
      return retval
    end
    

    Con esta implementación, se debería obtener la siguiente salida esperada: [5, 4, 3, 2, 1].

    ¡Espero que esto sea útil!

Comments are closed.