Изменение порядка массива в рубине

У меня есть следующий массив [12,16,5,9,11,5,4] он печатает: 12,16,5,9,11,5,4.

Я хочу, чтобы он печатался: 4,5,11,9,5,16,12

Когда я сделал array.reverse, он напечатал:

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

Это отменило отдельные числа - любая идея, как я могу это остановить?

Ответ 1

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]

Я не вижу, что вы видите.

Изменить. Расширяя то, что заметил Бен, вы можете изменить строку.

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

Если вам нужно изменить строку таким образом, вы должны сделать что-то вроде следующего:

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

Ответ 2

Похоже, что ваш массив на самом деле является строкой

Ответ 3

Вы пытаетесь изменить список на месте? Если да, то выполните:

>> 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]

В противном случае:

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

Ответ 4

Если ваш массив является фактической строкой, попробуйте следующее:

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

Надеюсь, что решает вашу проблему!

Ответ 5

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]