Ruby 数组的所有组合
我有一个数组Ruby 数组的所有组合,ruby,arrays,algorithm,combinations,combinatorics,Ruby,Arrays,Algorithm,Combinations,Combinatorics,我有一个数组 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 w
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"]
从中尝试代码
结果不正确
"w1", "w2", "w3", "w1 w2", "w1 w3", "w2 w3", "w1 w2 w3"]
这里有一种方法,但是这个结果有“w3 w3 w3”,而您想要的结果没有,但是我看不到包含“w3 w3”和“w1 w1 w1”但不包含“w3 w3 w3”的逻辑,所以我假设您没有添加它 您要寻找的不是组合,而是排列(带重复):
这不是不正确的-它只是给出了没有重复的组合。你要求的是有重复的组合。我认为这不是排列的任务,而是组合(有重复)。在最初的问题中,提供的期望输出包括许多具有相同项目的项目,但它们具有不同的顺序。例如,该列表包含“w2 w3”和“w3 w2”。因此,重复的组合不是办法,因为它只会添加其中一个。我滑动了预期的输出,它有不同顺序的变化。同位语。
a = ["w1", "w2", "w3"]
result = (1..a.size).flat_map do |size|
a.repeated_permutation(size).map { |perm| perm.join(' ') }
end