ruby - 数组的所有组合

标签 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 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/

相关文章:

mysql - 如何在这个多关联上正确添加索引?

ruby - 如何从 Ruby 中的阶乘方法中排除 float ?

java - Blowfish 加密 : Java vs. Ruby

sql - 如何删除 PostgreSQL 中的数组元素?

ruby-on-rails - 使用一系列等级计算字母等级

arrays - 根据 SimpleRow 的选定日期设置 calendar.selectedDate

php - 根据值从多维数组中删除元素

algorithm - 如何编写一个返回嵌套表中键列表的函数?

python - 将社区结构(列表)转换为邻接表

c - 合并排序没有给出正确的输出,c