Bonjour,
Je cherche à recoder le prédicat reverse/2, en utilisant un accumulateur.
Le lien https://www.developpez.net/forums/d1...nverser-liste/ offre une solution, mais qui est insatisfaisante sur les listes imbriquées.
Par exemple inverse([x,[y,z]],L) va donner [z,y,x], et non [[z,y],x].
J'ai fini par trouver un document qui semble traiter cette question, ici https://www.cril.univ-artois.fr/~sai...ologCours2.pdf.
Mais en fait, le résultat sur le même exemple ne donne toujours pas le bon résultat.
Le prédicat dans ce document est codé comme ceci :Est-ce que quelqu'un aurait une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 reverseRec(L,I):- reversRecAcc(L, [], I). reverseRecAcc([],I, I). reverseRecAcc([X|L1],I1, I2):- atom(X), reverseRecAcc(L1, [X|I1], I2). reverseRecACC([X|L1], I1, I2):- not(atom(X)), reverseRec(X, I1, I3), reverseRec(L1, I3, I2).
Partager