/* membre(Element,Liste) est vrai si Element est un element de Liste*/ membre(Element,[Element|_]). membre(Element,[_|Liste]) :- membre(Element,Liste). /* supprimer(Element,Liste1,Liste2) est vrai lorsque Liste2 possede tous les elements de Liste1 sauf Element */ supprimer(_,[],[]). supprimer(Element,[Element|Queue],QueueSansElement) :- supprimer(Element,Queue,QueueSansElement). supprimer(Element,[ElementDifferent|Queue],[ElementDifferent|QueueSansElement]) :- Element\=ElementDifferent, supprimer(Element,Queue,QueueSansElement). /* concatener(Liste1,Liste2,Liste3) est vrai lorsque Liste3 est la concatenation de Liste1 et Liste2 */ concatener([],Liste,Liste). concatener([Element|Queue1],Liste2,[Element|Queue3]) :- concatener(Queue1,Liste2,Queue3). /* inserer(Element,Liste1,Liste2) est vrai lorsque Liste2 represente l'insertion (ordre croissant) de Element dans Liste1 */ inserer(Element,[],[Element]). inserer(Element,[ElementPlusGrand|Queue1],[Element,ElementPlusGrand|Queue1]) :- Element=ElementPlusPetit, inserer(Element,Queue1,Queue2). /* longueur(Liste,Longueur) est vrai lorsque Longueur est égal au nombre d'éléments de Liste */ longueur([],0). longueur([_|Queue], Longueur) :- longueur(Queue, LongueurQueue), Longueur is LongueurQueue+1. decouper([],_,[[]]). decouper(Liste,Taille,[Liste]) :- longueur(Liste,Longueur), Longueur>0, Longueur