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

Kev*_*Dog 5 ruby set combinatorics

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

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

bas*_*man 13

查看Array#组合

然后这样的事情:

2.upto(4) { |n| array.combination(n) }
Run Code Online (Sandbox Code Playgroud)


tok*_*and 7

调整basicxman的一点点:

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

  • @steenslag:更短,更快,更清晰(至少对于那些了解`flat_map`的人来说,其他人会学习:-) (2认同)