Kako ukloniti duplikate u Prologu
Prolog je deklarativni programski jezik koji se često koristi u istraživanju umjetne inteligencije i lingvistike. Za razliku od uobičajenih proceduralnih jezika, većina Prolog programa definirana je kao niz pravila i jednadžbi, a ne kao niz koraka. Sljedeći kôd opisuje postupak uklanjanja duplikata s popisa u Prologu.
1. korak
Otvorite uređivač teksta, kao što je Notepad, i spremite datoteku pod nazivom "remove_dups.pl."
2. korak
Upišite kod između kosih crta (izostavljajući same kose crte):
/ % remove_dups(+List, -NewList):% Novi popis povezan je s popisom, ali s uklonjenim dupliciranim stavkama. ukloni_dups([], []).
remove_dups([Prvi | Ostatak], NewRest) :- član(Prvi, Ostatak), remove_dups(Ostatak, NewRest).
remove_dups([Prvi | Ostatak], [Prvi | NoviOstatak]) :- not(član(Prvi, Ostatak)), remove_dups(Ostatak, NoviOstatak). /
Funkcija "remove_dups" definirana je kao niz od tri pravila. Prvo pravilo ("remove_dups([],[].)") specificira da ako je popis prazan, ne treba ništa učiniti; funkcija bi se trebala jednostavno vratiti. Drugo pravilo navodi da ako se prva stavka na popisu pojavi bilo gdje drugdje na popisu, tada je treba ukloniti (budući da je duplikat), a obrada treba nastaviti korištenjem ostatka popisa ponovnim pozivanjem funkcije remove_dups s prvom stavkom na popisu izostavljeni. Završno pravilo navodi da ako prvi član popisa nije prisutan nigdje drugdje na popisu, treba ga zadržati i nastaviti s obradom.
3. korak
Spremite svoj rad pritiskom na "Ctrl" i "S" zajedno.
Savjet
Dok jezici kao što su C i Java obično rješavaju probleme korištenjem iterativnih petlji, deklarativni i funkcionalni jezici poput Prologa obično rješavaju probleme rekurzivno ili opetovanim pozivanjem iste funkcije na sve manjem i manjem skupu ukupnih podataka. Neke je probleme mnogo lakše riješiti rekurzijom, iako to može biti teško naučiti programerima koji su navikli koristiti samo iterativne petlje za rješavanje problema.