2009-10-15 42 views

Trả lời

26

Trong Ruby 1.8.6, bạn có thể sử dụng 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]] 

Trong 1.8.7 và sau đó, combination được xây dựng -in:

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

Hoặc, nếu bạn thực sự muốn có một câu trả lời không thư viện:

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]]}} 
+7

bạn phải là một người ngoài hành tinh – cmrichards

Các vấn đề liên quan