使用Ruby在数组中查找大小为N的所有子集

时间:2011-09-09 00:37:25

标签: ruby set combinatorics

给定一个数组['a', 'b', 'c', 'd', 'e', 'f'],我如何获得包含两个,三个和四个元素的所有子集的列表?

我是Ruby的新手(从C#转移)并且不确定'Ruby Way'是什么。

2 个答案:

答案 0 :(得分:13)

查看Array#combination

然后是这样的:

2.upto(4) { |n| array.combination(n) }

答案 1 :(得分:7)

稍微调整一下basicxman:

2.upto(4).flat_map { |n| array.combination(n).to_a }
#=> [["a", "b"], ["a", "c"], ["a", "d"], ..., ["c", "d", "e", "f"]]