Duplicaten verwijderen in Prolog

Prolog is een declaratieve programmeertaal die veel wordt gebruikt in onderzoek naar kunstmatige intelligentie en taalkunde. In tegenstelling tot de meer gebruikelijke proceduretalen, worden de meeste Prolog-programma's gedefinieerd als een reeks regels en vergelijkingen, in plaats van als een reeks stappen. De volgende code beschrijft het proces om duplicaten uit een lijst in Prolog te verwijderen.

Stap 2

Typ de code tussen de schuine strepen (laat de schuine strepen zelf weg):

/ % remove_dups(+List, -NewList): % Nieuwe lijst is gebonden aan lijst, maar dubbele items zijn verwijderd. 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). /

De functie "remove_dups" wordt gedefinieerd als een reeks van drie regels. De eerste regel ("remove_dups([],[].)") specificeert dat als de lijst leeg is, er niets moet worden gedaan; de functie zou gewoon moeten terugkeren. De tweede regel specificeert dat als het eerste item in de lijst ergens anders in de lijst voorkomt, het moet worden verwijderd (omdat het een duplicaat) en de verwerking moet doorgaan met het gebruik van de rest van de lijst door de functie remove_dups opnieuw aan te roepen met het eerste item in de lijst gestopt. De laatste regel specificeert dat als het eerste lid van de lijst niet elders in de lijst voorkomt, deze moet worden behouden en dat de verwerking moet worden voortgezet.

Techwalla kan een vergoeding verdienen via gelieerde links in dit verhaal.