2012-03-12 239 views
0

这里的问题是红宝石数组元素分组

我有一个数组:

a = [1, 2, 3, 4] 

,并希望得到:

b = [[1, 2, 3], [1, 3, 4], [1, 2, 4], [2, 3, 4]] 

什么是最好的方法是什么?谢谢!

+1

在我看来,你已经完成! – 2012-03-12 20:06:26

+0

[1,2,3,4,5,6,7,8] – ijani 2012-03-12 20:07:10

+0

你是在问一个人为你做作业吗? – gtd 2012-03-12 20:10:05

回答

3

您正在寻找所有唯一集3元出一套4

使用阵列#组合方法的:

a = [1, 2, 3, 4] 
b = a.combination(3).to_a 

输出:

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

更多信息:

Array#combination
Wikipedia Combination

0

这是我的第一个实现。 (但性能吸我猜)

array = [1,2,­3,4] 
b = [] 
array.each­{|e| c = array­.clone; c.del­ete(e); b << c} 
# b.sort!