ruby - 生成对象数组重复排列的过滤子集(给定长度 k)

标签 ruby algorithm permutation

我是 Ruby 新手。我需要根据长度生成对象的所有组合。

例如,array = [obj1, obj2, obj3]length = 2,则组合为:

[
  [obj1, obj1],
  [obj1, obj2],
  [obj1, obj3],
  # ...
  [obj3, obj3]
]

我知道我可以使用 repeated_permutation 方法来解决这个问题,但我还需要能够过滤一些排列。例如,要过滤掉 2 个相同对象一个接一个的排列,即像这样 [obj1, obj1]

最佳答案

如果您只需要删除属于同一对象的任何对,您可以简单地使用 permutation

arr = [1,2,3]
arr.permutation(2).to_a

#=>  [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]

关于ruby - 生成对象数组重复排列的过滤子集(给定长度 k),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39624580/

相关文章:

Ruby:为每个子类执行代码

c++我的二叉树格式正确

algorithm - 类 Levenshtein 距离度量中的最近邻搜索

c - 我无法找出计算排列的程序中的错误

ruby - ruby 中的字符串替换方法有什么用?

ruby-on-rails - 如何验证其他表中的相应条目是否存在

java - 从静态类型到动态类型

javascript - 如何将整数更改为 2 个字节

lisp - 生成列表的排列

java - 数组的 k 大小的相等排列数