我有数组
a = ["w1", "w2", "w3"]
如何使用每种值组合生成一个新数组? 我需要输出如下所示:
["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"]
尝试来自 Generate array of all combinations of an existing array 的代码
结果不正确
"w1", "w2", "w3", "w1 w2", "w1 w3", "w2 w3", "w1 w2 w3"]
最佳答案
这是一种方法,但是这个结果有“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
关于ruby - 数组的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258571/