У меня есть список кортежей формы [(A,B),(B,A),(D,C),(E,F),(C,D),(F,E)]
. Как мне вернуть список, который равен [(A,B),(C,D),(E,F)]
? Единственные решения, которые я нашел, - удалить повторяющиеся кортежи, и единственными решениями, которые я могу себе представить, являются наивные решения O (n^2). Есть ли способ сделать это эффективно?Возвратите уникальные кортежи из списка кортежей в Haskell
0
A
ответ
5
Если тип компонентов ваших пар в классе Ord
, вы можете сделать это в O (N журнал N) Время:
import Data.List (sort, group)
sortPair :: Ord a => (a, a) -> (a, a)
sortPair (x, y)
| x <= y = (x, y)
| otherwise = (y, x)
uniques :: Ord a => [(a, a)] -> [(a, a)]
uniques = map head . group . sort . map sortPair
Таким образом, если мы определим
data T = A | B | C | D | E | F deriving (Eq, Ord, Show)
у нас есть, для примера:
> uniques [(A,B),(B,A),(D,C),(E,F),(C,D),(F,E)]
[(A,B),(C,D),(E,F)]
Смежные вопросы
- 1. Уникальные комбинации из 4 из списка кортежей в haskell
- 2. Haskell: Создайте уникальные n-кортежи из списка x элементов
- 3. Удаление сопряженных кортежей из списка в Haskell
- 4. Как извлечь кортежи из списка кортежей?
- 5. удаления кортежей из списка (Haskell)
- 6. Haskell Построение списка из списка кортежей
- 7. Как искать уникальные кортежи в нескольких списках кортежей в python
- 8. Получение элемента из списка кортежей в Haskell
- 9. Уникальные одиночные значения из списка пар кортежей?
- 10. поиск минимума списка кортежей в HASKELL
- 11. Сортировка кортежей внутри списка в Haskell
- 12. Haskell - добавить кортежи в список вместе?
- 13. Создания кортежей вариаций из списка - Haskell
- 14. Haskell: Удаление дубликатов кортежей из списка?
- 15. Как испускают кортежи вместо списка кортежей
- 16. Сортировка кортежи в списках Haskell
- 17. Haskell добавить уникальные комбинации из списка кортеж
- 18. Функция сортировки списка кортежей - Haskell
- 19. Haskell: Распечатка содержимого списка кортежей
- 20. Использовать уникальные кортежи в таблице HTML
- 21. Возвратите только уникальные значения
- 22. Удаление конкретных кортежи из списка
- 23. Как извлечь кортежи из списка списков в Haskell
- 24. Удалить элемент из списка кортежей
- 25. Сравнить Список с кортежами против списка и возвращать уникальные кортежи
- 26. Concatanate кортежи в списке кортежей
- 27. Haskell Преобразование списка в список кортежей
- 28. Уникальные кортежи в R с РЛЭ
- 29. Ввод списка кортежей в качестве параметров в Haskell
- 30. Как я могу отделить кортежи в Haskell?
Если вы можете использовать сторонние библиотеки, кажется, есть «набор» тип данных доступны: HTTP: //www.haskell. org/ghc/docs/6.12.1/html/libraries/container-0.3.0.0/Data-Set.html – millimoose
Если вам разрешено сортировать список заранее, можно создать «O (n log n)). –
Мне разрешено сортировать этот список. –