Jak usunąć duplikaty w Prologu

Prolog to deklaratywny język programowania powszechnie używany w badaniach nad sztuczną inteligencją i językoznawstwem. W przeciwieństwie do bardziej powszechnych języków proceduralnych, większość programów Prologu jest zdefiniowana jako seria reguł i równań, a nie seria kroków. Poniższy kod opisuje proces usuwania duplikatów z listy w Prologu.

Krok 2

Wpisz kod między ukośnikami (pozostawiając same ukośniki):

/ % remove_dups(+List, -NewList): % Nowa lista jest powiązana z Listą, ale z usuniętymi duplikatami. usuń_duplikaty([], []).

remove_dups([Pierwszy | Reszta], NowaReszta) :- member (Pierwszy, Reszta), remove_dups (Reszta, NowaReszta).

remove_dups([Pierwszy | Reszta], [Pierwszy | NowaReszta]) :- not (członek (Pierwszy, Reszta)), remove_dups (Reszta, NowaReszta). /

Funkcja „remove_dups” jest zdefiniowana jako seria trzech reguł. Pierwsza reguła ("remove_dups([],[].)") określa, że ​​jeśli lista jest pusta, nic nie powinno być zrobione; funkcja powinna po prostu zwrócić. Druga reguła określa, że ​​jeśli pierwsza pozycja na liście pojawia się gdziekolwiek indziej na liście, to powinna zostać usunięta (ponieważ jest duplikat) i przetwarzanie powinno być kontynuowane przy użyciu reszty listy przez ponowne wywołanie funkcji remove_dups z pierwszą pozycją na liście odpuścić. Ostateczna zasada określa, że ​​jeśli pierwszego członka listy nie ma w innym miejscu na liście, należy go zachować, a przetwarzanie powinno być kontynuowane.

Techwalla może uzyskać odszkodowanie za pośrednictwem linków partnerskich w tej historii.