Bonjour,

Je veux développer en Prolog un prédicat qui me permet d'obtenir toutes les permutations d'une liste. Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
?- permut([a,b,c],X).
X=[a,b,c]
X=[a,c,b]
X=[b,a,c]
X=[b,c,a]
X=[c,b,a]
X=[c,a,b]
Ce prédicat ne doit pas être difficile à écrire mais je ne vois pas trop comment faire (je débute en prolog). J'ai pensé dans un premier temps à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
/* Le prédicat enlever permet d'enlever un élément d'une liste */
enlever(x,[x|Q],Q).
enlever(x,[y|Q],[y|Q1]):-enlever(x,Q,Q1).
/* Le prédicat permut permet de faire l'opération de permutation */
permut([],[]).
permut(L,[x|Q1]):-enlever(x,L,Q),permut(Q,Q1).
Mais ca n'a vraiment pas l'air de marcher même le prédicat enlever seul ne marche pas! Au fait, j'utilise SWI Prolog.

Si quelqu'un pouvait me donner un petit coup de pouce, ca serait gentil.

Merci d'avance