从Ruby中的列表中获取所有对的组合

Posted

技术标签:

【中文标题】从Ruby中的列表中获取所有对的组合【英文标题】:Getting all combinations of pairs from a list in Ruby 【发布时间】:2010-12-07 01:54:16 【问题描述】:

我有一个元素列表(例如数字),我想检索所有可能对的列表。我如何使用 Ruby 做到这一点?

例子:

l1 = [1, 2, 3, 4, 5]

结果:

l2 #=> [[1,2], [1,3], [1,4], [1,5], [2,3], [2,4], [2,5], [3,4], [3,5], [4,5]]

【问题讨论】:

【参考方案1】:

在 Ruby 1.8.6 中,您可以使用Facets:

require 'facets/array/combination'
i1 = [1,2,3,4,5]
i2 = []
i1.combination(2).to_a # => [[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]

在 1.8.7 及更高版本中,combination 是内置的:

i1 = [1,2,3,4,5]
i2 = i1.combination(2).to_a

【讨论】:

【参考方案2】:

或者,如果你真的想要一个非图书馆的答案:

i1 = [1,2,3,4,5]
i2 = (0...(i1.size-1)).inject([]) |pairs,x| pairs += ((x+1)...i1.size).map |y| [i1[x],i1[y]]

【讨论】:

以上是关于从Ruby中的列表中获取所有对的组合的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Erlang 中的对列表中获取元素

从python列表中获取元素的唯一组合[重复]

从rails中的yaml获取变量

从数组(Java)中获取所有大小 n 组合的算法? [关闭]

如何从我的SQL SERVER获取我的数据库列表,并使用javafx将其添加到组合框中

在列表框中显示所有记录