1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
%predicat pour enlever un element de la liste
remove_at(Elem,[Elem|Reste],1,Reste).
remove_at(Elem,[Y|Reste],Position,[Y|Ys]) :- Position > 1,
K1 is Position - 1, remove_at(Elem,Reste,K1,Ys).
%predicat pour inserer un element dans la liste
insert_at(Elem,Liste,Position,Resultat) :- remove_at(Elem,Resultat,Position,Liste).
%predicat pour modifier un element de la liste
modifierElement(Elem,Liste,Position,Resultat):-
nth1(Position,Liste,v),%je ne modifie l'element que s'il est 'v'
remove_at(_,Liste,Position,Reste),
insert_at(Elem,Reste,Position,Resultat).
%et changeLigne
changeLigne([p,p],[p,p]).
changeLigne(Liste,Resultat):-
nth1(Position,Liste,v),
modifierElement(p,Liste,Position,Resultat),
changeLigne(Resultat,_). |
Partager