Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 数组的所有组合_Ruby_Arrays_Algorithm_Combinations_Combinatorics - Fatal编程技术网

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