对于这个数组:a = [8, 2, 22, 97, 38, 15]
,如何以滑动窗口的方式获取长度为3的所有子数组,而不会干扰值的顺序。?
例如,结果应为:[[8,2,22],[2,22,97],[22,97,38],[97,38,15]]
答案 0 :(得分:2)
你可以传递一个像这样的参数来实现
a.each_con(3)
这将返回一个您可以迭代的枚举。要将Enumeration转换为数组,请调用to_a方法:
a.each_cons(3).to_a
答案 1 :(得分:0)
这是我提出的:
def ordered_permutations(array: [1,2,3], length: n)
array = array.dup
[].tap do |result|
(array.count - (length - 1)).times do
result << array[0..(length-1)]
array.shift
end
end
end
p ordered_permutations(array: a, length: 3)