Max*_*off 2 ruby arrays algorithm combinations combinatorics
我有阵列
a = ["w1", "w2", "w3"]
Run Code Online (Sandbox Code Playgroud)
如何使用每个值组合生成新数组?我需要输出看起来像这样:
["w1", "w2", "w3", "w1 w1", "w1 w2", "w1 w3", "w2 w1", "w2 w2", "w2 w3", "w3 w1", "w3 w2", "w3 w3", "w1 w1 w1", "w1 w1 w2", "w1 w1 w3", "w1 w2 w1", "w1 w2 w2", "w1 w2 w3", "w2 w1 w1", "w2 w1 w2", "w2 w1 w2", "w2 w1 w3", "w2 w2 w1", "w2 w2 w2", "w2 w2 w3", "w2 w3 w1", "w2 w3 w2", "w2 w3 w3", "w3 w1 w1", "w3 w1 w2", "w3 w1 w3", "w3 w2 w1", "w3 w2 w2", "w3 w2 w3", "w3 w3 w1", "w3 w3 w2", "w3 w3 w2"]
Run Code Online (Sandbox Code Playgroud)
结果不正确
"w1", "w2", "w3", "w1 w2", "w1 w3", "w2 w3", "w1 w2 w3"]
Run Code Online (Sandbox Code Playgroud)
这是一种方法,但是这个结果有"w3 w3 w3"而你想要的结果没有,但是我没有看到逻辑包括"w3 w3"和"w1 w1 w1"而不是"w3 w3 w3" ,所以我假设你错过了添加它.
你要找的不是组合,而是排列(有了重复):
a = ["w1", "w2", "w3"]
result = (1..a.size).flat_map do |size|
a.repeated_permutation(size).map { |perm| perm.join(' ') }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
774 次 |
| 最近记录: |