Ako odstrániť duplikáty v Prologu

click fraud protection

Prolog je deklaratívny programovací jazyk bežne používaný vo výskume umelej inteligencie a lingvistiky. Na rozdiel od bežnejších procedurálnych jazykov je väčšina programov Prolog definovaná ako séria pravidiel a rovníc, a nie ako séria krokov. Nasledujúci kód popisuje proces odstránenia duplikátov zo zoznamu v Prologu.

Krok 2

Napíšte kód medzi lomky (lomky nechajte mimo):

/ % remove_dups(+Zoznam, -NovýZoznam): % Nový zoznam je viazaný na zoznam, ale s odstránenými duplicitnými položkami. remove_dups([], []).

remove_dups([Prvý | Zvyšok], Nový zvyšok) :- člen (prvý, zvyšok), remove_dups (odpočinok, nový zvyšok).

remove_dups([Prvý | Zvyšok], [Prvý | Nový zvyšok]) :- nie (člen (prvý, zvyšok)), remove_dups (odpočinok, nový zvyšok). /

Funkcia „remove_dups“ je definovaná ako séria troch pravidiel. Prvé pravidlo ("remove_dups([],[].)") určuje, že ak je zoznam prázdny, nemalo by sa nič robiť; funkcia by sa mala jednoducho vrátiť. Druhé pravidlo určuje, že ak sa prvá položka v zozname objaví kdekoľvek inde v zozname, mala by byť odstránená (keďže ide o duplikovať) a spracovanie by malo pokračovať pomocou zvyšku zoznamu opätovným volaním funkcie remove_dups s prvou položkou v zozname prerušené. Posledné pravidlo špecifikuje, že ak sa prvý člen zoznamu nenachádza inde v zozname, mal by sa ponechať a spracovanie by malo pokračovať.

Techwalla môže získať kompenzáciu prostredníctvom pridružených odkazov v tomto príbehu.