>> Électroniques Technologie >  >> Maison intelligente >> Vie intelligente

Comment supprimer les doublons dans Prolog

Prolog est un langage de programmation déclaratif couramment utilisé dans la recherche en intelligence artificielle et en linguistique. Contrairement aux langages procéduraux les plus courants, la plupart des programmes Prolog sont définis comme une série de règles et d'équations, plutôt que comme une série d'étapes. Le code suivant décrit le processus pour supprimer les doublons d'une liste dans Prolog.

Étape 1

Ouvrez un éditeur de texte, tel que le Bloc-notes, et enregistrez votre fichier sous le nom "remove_dups.pl."

Étape 2

Tapez le code entre les barres obliques (sans les barres obliques) :

/ % remove_dups(+List, -NewList):% La nouvelle liste est liée à la liste, mais avec les éléments en double supprimés. remove_dups([], []).

remove_dups([First | Rest], NewRest) :- membre(First, Rest), remove_dups(Rest, NewRest).

remove_dups([First | Rest], [First | NewRest]) :- not(member(First, Rest)), remove_dups(Rest, NewRest). /

La fonction "remove_dups" est définie comme une série de trois règles. La première règle ("remove_dups([],[].)") précise que si la liste est vide, il ne faut rien faire; la fonction doit simplement revenir. La deuxième règle spécifie que si le premier élément de la liste apparaît n'importe où ailleurs dans la liste, alors il doit être supprimé (puisqu'il s'agit d'un doublon) et le traitement doit continuer en utilisant le reste de la liste en appelant à nouveau la fonction remove_dups avec le premier élément dans la liste abandonnée. La règle finale précise que si le premier membre de la liste n'est pas présent ailleurs dans la liste, il doit être conservé et le traitement doit continuer.

Étape 3

Enregistrez votre travail en appuyant simultanément sur "Ctrl" et "S".

Astuce

Alors que les langages tels que C et Java résolvent généralement les problèmes à l'aide de boucles itératives, les langages déclaratifs et fonctionnels comme Prolog résolvent généralement les problèmes de manière récursive ou en appelant à plusieurs reprises la même fonction sur un ensemble de plus en plus petit de données totales. Certains problèmes sont beaucoup plus faciles à résoudre avec la récursivité, bien que cela puisse être difficile à apprendre pour les programmeurs habitués à n'utiliser que des boucles itératives pour résoudre des problèmes.


Vie intelligente