группировка элементов ruby - PullRequest
0 голосов
/ 13 марта 2012

вот в чем проблема

У меня есть массив:

a = [1, 2, 3, 4]

и хочу получить:

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

как лучше? спасибо!

Ответы [ 2 ]

3 голосов
/ 13 марта 2012

Вы ищете все уникальные наборы из 3 элементов из набора 4.

Используйте метод комбинации Array #:

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

вывод:

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

Подробнее:

Массив # комбинации
Wikipedia Combination

0 голосов
/ 13 марта 2012

Вот моя первая реализация.(Но производительность сосет, я думаю)

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