Bonjour,
je bloque sur un prédicat qui pour une liste L, on répète N fois chaque élément de la liste & donne une liste résultat Lr : repeter([a,b,c], 3, Lr). -> Lr = [a,a,a,b,b,b,c,c,c].
Pour commencer j'y vais par étape en faisant un prédicat qui répète un élément X, N fois & on met le résultat dans une liste : test(2, 3, Lr). -> Lr = [2,2,2].
J'ai donc ça pour le moment:
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 test(_,0,[]). test(X, N, ):- N>0, Lr = [X], Tmp is N-1, test(X, Tmp, ).
EDIT
Bon j'en suis arrivé à là:
& là je séche un peu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 test(_,_,[]). test(X, N, [X|Lr]):- N>0, Tmp is N-1, test(X, Tmp, Lr). repete([], _, []). repete([T|Q], N, Lr):- test(T, N, Lr), repete(Q, N, Lr).
EDIT FINAL
Bon j'ai finalement réussi, je post ça ici si besoin :
Je clos, bonne soirée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 repeteElement(_,_,[]). repeteElement(X, N, [X|Lr]):- N>0, Tmp is N-1, repeteElement(X, Tmp, Lr). //Exemple: repeteElement(a, 3, Lr). -> Lr = [a,a,a]. repeter([], _, []). repeter([T|Q], N, Lfinal):- repeteElement(T, N, Lintermediaire), append(Lintermediaire, Lresultat, Lfinal), repeter(Q, N, Lresultat). // Exemple: repeter([a,b,c], 3, Lr). -> Lr = [a,a,a,b,b,b,c,c,c].
Partager