2016-09-18 98 views
0

我正在尋找一種類似於Array#combination的方法,但順序很重要。如何迭代連續的元素

鑑於此輸入:

array = ['a','b','c','d','e'] 

我想獲得:

[['a','b','c'],['b','c','d'],['c','d','e']] 

我試圖找到做這個的方法:

array = ['a','b','c','d','e'] 
x,a = 3,[] 

until x > (ary.size) do 
    a += (0.upto(ary.size - x).map{|i| ary[i..(x-1)+i]}) 
    x += 1 
end 
+0

您是否閱讀過Array和Enumerable文檔? –

+0

我只看了Arrray –

回答

4

可枚舉文檔是你的朋友:

array = ['a','b','c','d','e'] 
array.each_cons(3).to_a 
# => [["a", "b", "c"], ["b", "c", "d"], ["c", "d", "e"]] 

each_cons(n) { ... }

迭代連續元件的每個陣列的給定的塊。如果沒有給出塊,則返回一個枚舉器。

+0

啊我看到我只看着Array –