Ответ в теме: Генерация размещений и перестановок на Prolog

      Комментарии к записи Ответ в теме: Генерация размещений и перестановок на Prolog отключены
#2882

Вместо предикатов member и delete можно использовать один вызов стандартного предиката select:

permutation(_List, 0, []).
permutation(List, PermutationLength, [Head|PermutationTail]):-
select(Head, List, ListTail), 
PermutationTailLength is PermutationLength - 1,
permutation(ListTail, PermutationTailLength, PermutationTail).