invirtiendo el orden de una matriz en ruby

Tengo la siguiente matriz [12,16,5,9,11,5,4] que imprime: 12,16,5,9,11,5,4 .

Quiero que se imprima: 4,5,11,9,5,16,12

Cuando hice array.reverse se imprimió:

 4,5,11,9,5,61,21 

Se invirtieron los números individuales. ¿Alguna idea de cómo puedo detener eso?

 irb(main):001:0> a = [12,16,5,9,11,5,4] => [12, 16, 5, 9, 11, 5, 4] irb(main):002:0> a.reverse => [4, 5, 11, 9, 5, 16, 12] 

No estoy viendo lo que estás viendo.

Edición : expandiendo lo que Ben notó, puedes estar invirtiendo una cadena.

 irb(main):005:0> "12,16,5,9,11,5,4".reverse => "4,5,11,9,5,61,21" 

Si tiene que revertir una cadena de esa manera, debe hacer algo como lo siguiente:

 irb(main):008:0> "12,16,5,9,11,5,4".split(",").reverse.join(",") => "4,5,11,9,5,16,12" 

Suena como que su matriz es en realidad una cadena

¿Estás tratando de revertir la lista en su lugar? Si es así, entonces haz:

 >> arr = [12,16,5,9,11,5,4] => [12, 16, 5, 9, 11, 5, 4] >> arr.reverse! => [4, 5, 11, 9, 5, 16, 12] >> arr => [4, 5, 11, 9, 5, 16, 12] 

De otra manera:

 >> arr_rev=arr.reverse => [4, 5, 11, 9, 5, 16, 12] >> arr_rev => [4, 5, 11, 9, 5, 16, 12] 

Si su matriz es una cadena real, intente esto:

 "12,16,5,9,11,5,4".split(',').reverse 

Espero que resuelva tu problema!

 arr1 = [12,16,5,9,11,5,4] i = 0 arr2 = [] arr1.length.times do arr2 << arr1.reverse[i] i += 1 end p arr2 >>[4, 5, 11, 9, 5, 16, 12]