Я хочу создать список всех уникальных способов выбрать два из списка чисел в Haskell. Поэтому из списка [1,2,3]
Хотелось бы [[1,2],[2,3],[1,3]]
. Заказ не важен, поэтому я хочу, например, избегать создания как [1,2]
, так и [2,1]
.Создайте список уникальных комбинаций из списка
Мое текущее решение:
pairs :: Ord a => [a] -> [[a]]
pairs x = nub $ map sort $ map (take 2) (permutations x)
Это не особенно хорошее решение, однако, и это, безусловно, имеет некоторые серьезные проблемы с производительностью. Есть ли простое и эффективное решение этой проблемы?
Отлично, спасибо. Это то, чем я был. – JimmyCo