我正在寻找一种类似于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 :(得分:4)
可枚举文档是您的朋友:
array = ['a','b','c','d','e']
array.each_cons(3).to_a
# => [["a", "b", "c"], ["b", "c", "d"], ["c", "d", "e"]]
为每个连续元素数组迭代给定的块。如果没有给出块,则返回枚举器。