Hur man tar bort dubbletter i Prolog

Prolog är ett deklarativt programmeringsspråk som ofta används inom artificiell intelligens och lingvistikforskning. Till skillnad från de vanligare procedurspråken definieras de flesta Prolog-program som en serie regler och ekvationer, snarare än som en serie steg. Följande kod beskriver processen för att ta bort dubbletter från en lista i Prolog.

Steg 2

Skriv in koden mellan snedstrecken (låt själva snedstrecken vara ute):

/ % remove_dups(+List, -NewList): % New List är bunden till List, men med dubblettobjekt borttagna. remove_dups([], []).

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

remove_dups([First | Rest], [First | NewRest]) :- inte (medlem (First, Rest)), remove_dups (Rest, NewRest). /

Funktionen "remove_dups" definieras som en serie av tre regler. Den första regeln ("remove_dups([],[].)") specificerar att om listan är tom ska ingenting göras; funktionen ska helt enkelt återvända. Den andra regeln anger att om det första objektet i listan visas någon annanstans i listan, så ska det tas bort (eftersom det är en duplicate) och bearbetningen bör fortsätta att använda resten av listan genom att anropa remove_dups-funktionen igen med det första objektet i listan slutade. Den sista regeln anger att om den första medlemmen av listan inte finns någon annanstans i listan, ska den behållas och behandlingen ska fortsätta.

Techwalla kan få kompensation genom affiliate-länkar i den här historien.