Получение всех комбинаций пар из списка в Ruby

StackOverflow https://stackoverflow.com/questions/1573029

  •  21-09-2019
  •  | 
  •  

Вопрос

У меня есть список элементов (например.числа), и я хочу получить список всех возможных пар.Как я могу сделать это с помощью 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]]
Это было полезно?

Решение

В Ruby 1.8.6 вы можете использовать Фасеты:

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

Другие советы

Или, если вам действительно нужен небиблиотечный ответ:

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]]}}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top