Ива*_*вац 2 ruby arrays multidimensional-array
可能重复:
ruby数组元素分组
例.给定数组a:
a = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
它的长度是3所以我想打印所有2长度数组.这些是:
[1, 2]
[1, 3]
[2, 3]
Run Code Online (Sandbox Code Playgroud)
我不知道Ruby中是否有一些方法可以获得子集数组.如果没有这样的方法,最有效的方法是实现这一点.
这只是两个元素的简单组合:
>> xs = [1, 2, 3]
>> xs.combination(xs.size - 1).to_a
=> [[1, 2], [1, 3], [2, 3]]
Run Code Online (Sandbox Code Playgroud)
[编辑]作为@Joshua在评论中指出,该文件指出,该命令不保证(!).所以这是一个功能实现,它按照您要求的顺序生成组合.为了完整性,我将使它像原始combination方法一样懒惰:
require 'enumerable/lazy'
class Array
def combinations_of(n)
if n == 0
[[]].lazy
else
0.upto(self.size - 1).lazy.flat_map do |idx|
self.drop(idx + 1).combinations_of(n - 1).map do |xs|
[self[idx]] + xs
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)