组合到n

saw*_*awa 5 ruby arrays combinations

给定一个数组a,实现其组合直到n-th 的最佳方法是什么?例如:

a = %i[a b c]
n = 2

# Expected => [[], [:a], [:b], [:c], [:a, b], [:b, :c], [:c, :a]]
Run Code Online (Sandbox Code Playgroud)

Aru*_*hit 8

请执行以下操作:

a = %w[a b c]
n = 3

0.upto(n).flat_map { |i| a.combination(i).to_a }
# => [[], ["a"], ["b"], ["c"], ["a", "b"], 
# ["a", "c"], ["b", "c"], ["a", "b", "c"]]
Run Code Online (Sandbox Code Playgroud)