Bonjour,
Je veux développer en Prolog un prédicat qui me permet d'obtenir toutes les permutations d'une liste. Par exemple :
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
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]
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.
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).
Si quelqu'un pouvait me donner un petit coup de pouce, ca serait gentil.
Merci d'avance
Partager