CL permutation
От: Аноним  
Дата: 04.12.12 05:39
Оценка:
Как последовательно перебрать все перестановки списка

19.12.12 23:24: Перенесено модератором из 'Языки с динамической типизацией' — Кодт
Re: CL permutation
От: Кодт Россия  
Дата: 19.12.12 15:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как последовательно перебрать все перестановки списка


На каком языке?

В питоне есть библиотека itertools и в ней функция permutations.
Она отдаёт тупой генератор всех перестановок исходного списка.
Тупой — потому что, если в списке есть одинаковые элементы, то на выходе будут встречаться одинаковые списки.

Для списков, над элементами которых определена операция сравнения, — есть алгоритм Дональда Кнута, порождающий уникальные перестановки.
C++никам он хорошо знаком под именем std::next_permutation (только он не над списками, а над изменяемыми массивами)
Перекуём баги на фичи!
Re[2]: CL permutation
От: Кодт Россия  
Дата: 19.12.12 16:12
Оценка:
Здравствуйте, Кодт, Вы писали:

К>На каком языке?


Пардон, протупил: в названии темы упомянут Коммон Лисп.

Не будучи знатоком CL, полез в гугл.

1) собственно алгоритм перестановок, очень простой.
стековерфлоу

2) библиотечные решения:
GSLL — импорт сишной GNU Scientific Library
CL-permutations — чистый лисп
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.