Bonjour,
Je souhaite créer un prédicat rechercher /2 qui prend en paramètre une liste de sous-listes et qui retourne toutes les permutations possibles de ces sous-listes concaténées.
En gros, si je fais: rechercher(L,[[1,2],[3,4]]). Ça me retourne:
Actuellement, mon prédicat rechercher est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 L = [1,2,3,4]; L = [1,2,4,3]; L = [2,1,3,4]; L = [2,1,4,3].
Je permute la première sous-liste de la liste avec le prédicat permutation (Un prédicat qui fonctionne et qui retourne toutes les permutations possibles), j'appelle rechercher récursivement pour qu'il me trouve toutes les permutations possibles de toutes les autres sous-listes, puis j'appelle un prédicat grouperListes (qui fonctionne également), et qui concatène toutes les permutations trouvées entre elles. Malheureusement, mon prédicat rechercher me renvoie L = [1,2,3,4]; à l'infini.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 rechercher(_,[[]]):- !. rechercher(Res,[L1|L2]):- permutation(L11,L1), rechercher(L22,[L2]), grouperListes(Res,[L11|L22]).
Je ne comprends pas trop pourquoi, j'ai cherché longtemps, mais je ne trouve pas de solution à mon problème. Pouvez-vous m'aider ?
Merci d'avance,
Decim298.

Répondre avec citation







Partager