>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

Comment supprimer les doublons en Prolog

Prolog est un langage de programmation déclaratif couramment utilisé dans la recherche en intelligence artificielle et linguistique. Contrairement aux langages procéduraux 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 en 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 (en laissant les barres elles-mêmes de côté) :

/ % remove_dups(+List, -NewList): % New List is bound to List, but with duplicate items removed. remove_dups([], []).

remove_dups([First | Rest], NewRest) :- member(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([],[].) ») spécifie que si la liste est vide, rien ne doit être fait ; la fonction doit simplement retourner. La deuxième règle spécifie que si le premier élément de la liste apparaît ailleurs dans la liste, alors il doit être supprimé (car c'est 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 de la liste omis. La règle finale spécifie 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 des langages comme C et Java résolvent généralement les problèmes en utilisant des boucles itératives, les langages déclaratifs et fonctionnels comme Prolog résolvent généralement les problèmes récursivement, ou en appelant répétitivement la même fonction sur un ensemble de données total de plus en plus petit. Certains problèmes sont beaucoup plus faciles à résoudre avec la récursion, bien que cela puisse être difficile à apprendre pour les programmeurs habitués à n'utiliser que des boucles itératives pour résoudre les problèmes.

Vie connectée