Je sais comment faire pour supprimer un élément d'une liste, mais est-il un moyen de supprimer plus d'un des éléments d'une liste? Par exemple,
deletelist([a,b,c,a,b],[a,c],X)
X = [b,b] % delete a and c from the list.
OriginalL'auteur MaXX99 | 2011-05-23
SWI-Prolog offre
subtract/3
:OriginalL'auteur Kaarel
Pour supprimer plusieurs éléments, nous vérifions si un élément est dans la deuxième liste et de le retirer lorsque la condition est vraie:
deletelist([a],[a],[a]).
réussit, mais il doit échouer.OriginalL'auteur pad
Voici une définition que donne toujours des réponses correctes (modulo la résiliation):
À l'aide de
tfilter/3
etmemberd_truth/3
d'autres réponses. Dans le cas où votre Prolog ne prend pas en chargedif/2
, voiriso_dif/2
pour un coffre-fort rapprochement.Certains des plus inhabituels, des questions qui doivent encore sortir correct:
Et voici quelques requêtes qui ne devrait en fait pas (et donc mettre fin), mais plutôt de la boucle. Notez que la boucle est beaucoup mieux que de donner une réponse incorrecte.
OriginalL'auteur false
OriginalL'auteur 尾崎隆大
Pour supprimer un seul élément dans une liste, il est une fonction de la bibliothèque "supprimer/3' pour une liste et un élément que vous souhaitez supprimer de la liste et retourne la nouvelle liste, avec l'élément supprimé. J'ai fait usage de cette et recuresed overs la liste des articles qui ont besoin de les retirer de la liste.
OriginalL'auteur Tom3993