Kā noņemt dublikātus programmā Prolog

Prolog ir deklaratīva programmēšanas valoda, ko parasti izmanto mākslīgā intelekta un lingvistikas pētījumos. Atšķirībā no izplatītākajām procesuālajām valodām, lielākā daļa Prolog programmu tiek definētas kā noteikumu un vienādojumu virkne, nevis kā darbību virkne. Šis kods apraksta dublikātu noņemšanas procesu no Prolog saraksta.

2. darbība

Ierakstiet kodu starp slīpsvītrām (pašas slīpsvītras neatstājot):

/ % remove_dups(+Saraksts, -NewList): % Jauns saraksts ir saistīts ar sarakstu, bet ir noņemti dublikāti. remove_dups([], []).

remove_dups([First | Rest], NewRest) :- dalībnieks (First, Rest), remove_dups (Rest, NewRest).

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

Funkcija "remove_dups" ir definēta kā trīs noteikumu virkne. Pirmais noteikums ("remove_dups([],[].)") norāda, ka, ja saraksts ir tukšs, nekas nav jādara; funkcijai vienkārši jāatgriežas. Otrais noteikums nosaka, ja pirmais vienums sarakstā parādās kaut kur citur sarakstā, tad tas ir jānoņem (jo tas ir dublikāts) un apstrāde jāturpina, izmantojot pārējo sarakstu, vēlreiz izsaucot funkciju remove_dups ar pirmo saraksta vienumu. pameta. Pēdējais noteikums nosaka, ka, ja saraksta pirmais dalībnieks nav citur sarakstā, tas ir jāsaglabā un jāturpina apstrāde.

Techwalla var nopelnīt kompensāciju, izmantojot šajā stāstā esošās saistītās saites.