2015-10-15 3 views
3

У меня есть массив формы [1,2,3,4,5].Цикл через массив в Ruby

Можно ли зацикливать этот массив и в течение каждой итерации получить массив, где начальной точкой является текущий элемент, а конечной точкой является элемент до этого?

Как

[1,2,3,4,5] 

[2,3,4,5,1] 

[3,4,5,1,2] 

[4,5,1,2,3] 

[5,1,2,3,4] 

Я пытаюсь с помощью метода .cycle массива, но это не дает ожидаемого результата.

ответ

6

Отъезд rotate.

a = [ "a", "b", "c", "d" ] 
a.rotate   #=> ["b", "c", "d", "a"] 
5
irb(main):005:0> array = [1,2,3,4,5] 
=> [1, 2, 3, 4, 5] 
irb(main):006:0> array.size.times.map{|i| array.rotate(i)} 
=> [[1, 2, 3, 4, 5], [2, 3, 4, 5, 1], [3, 4, 5, 1, 2], [4, 5, 1, 2, 3], [5, 1, 2 , 3, 4]] 
Смежные вопросы