|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 25 ![]() |
bonjour,
comme le précise l'intitulé j'ai soucis avec des listes de listes car elle peuvent contenir de elements vides, ce qui n'est pas acceptable. ma liste est remplie par des findall donc je suis pas maitre de son remplissage. aussi je souhaiterais savoir si quelqu'un a une idée, ou un code deja fait ce serais le mieux, pour effectuer cette tache. Accesoirement je souhaiterais aussi savoir s'il existe un moyen de faire un prédicat qui me permettrais de prendre un élément de cette liste, genre queue à priorité, qui analyserais un sous-élément des éléments (des listes) de ma liste "purifiée". Merci d'avance. |
|
|
00
|
|
|
#2 | |||||
![]() ![]() Inscription : septembre 2003 Messages : 4 443 ![]() |
Dans le test du findall, on peut ajouter la condition d'une liste on vide :
Code :
Citation:
Code :
Pour le reste, un exemple avec ce qui est désiré serait utilie pour répondre, on peut toujours tout faire.
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
|||||
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 25 ![]() |
Tas solution du exlude correspond mieux a ce dont j'ai besoin, et fonctionne parfaitement.
pour la suppression des doublons, ma structure de donnée est celle ci : [Nom,Xi,Xf,V,L] chaque element est de cette forme, or il peut y en avoir plusieurs qui partage le Xf (la destination de la ction, car c'est un plan). j'ai donc une liste d'elements comme ceux-ci mais ma fonction de suppression des doublon bloque complètement le déroulement de ma "fonction" principale. Code :
c'est comme si cela retournait un false et arretais le déroulement, car le prédicat serait devenu faux. une variante qui m'aiderais serait de supprimer tous les elements qui partage le meme Xf avec des elements d'une autre liste. on teste l'OpenList pour qu'elle ne contienne pas de doublon, ni en son sein ni avec la CloseList. Cordialement. |
||
|
|
00
|
|
|
#4 | ||
![]() ![]() Inscription : septembre 2003 Messages : 4 443 ![]() |
Code :
retirer_doublon([[_,_,C,_,_]|U],S,R):- member([_,_,C,_,_],U), Code :
__________________
"La haine seule fait des choix" - Koan Zen "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne. Faites du Prolog, ça vous changera les idées ! Ma page Prolog Mes codes sources commentés Mon avatar : Intérieur avec jeune femme de Vilhelm Hammershoi |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 25 ![]() |
je viens de tester ton code.
il fonctionne bien. il retire en effet les doublons en suivant ma structure de données. Le problème est que si il vient à retirer un doublon, il termine ses boucles par un false, alors que si il n'en retire pas il termine simplement par la variable de retour, sans false. dans le cas ou il ne retire rien ça ne pose pas de problème dans l’exécution du prédicat père, mais si il y en retire un et , bien qu'il retourne une liste nettoyé, qu'il y a un false, tout s'arrête; et la c'est très problématique. peut on éviter cela? EDIT : cela fonctionne, j'avais juste pas changé le code, erreur de manipulation. merci bien. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com