Az ismétlődések eltávolítása a Prologban

A Prolog egy deklaratív programozási nyelv, amelyet gyakran használnak a mesterséges intelligencia és a nyelvészeti kutatásokban. Az elterjedtebb eljárási nyelvekkel ellentétben a legtöbb Prolog program szabály- és egyenletsorozatként van definiálva, nem pedig lépések sorozataként. A következő kód azt a folyamatot írja le, amellyel eltávolíthatók a másolatok a Prolog listáról.

2. lépés

Írja be a kódot a perjelek közé (a perjeleket hagyja ki):

/ % remove_dups(+List, -NewList): % Az új lista a Listához van kötve, de a duplikált elemek eltávolítva. remove_dups([], []).

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

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

A "remove_dups" függvény három szabályból álló sorozatként van definiálva. Az első szabály ("remove_dups([],[].)") meghatározza, hogy ha a lista üres, akkor semmit sem szabad tenni; a függvénynek egyszerűen vissza kell térnie. A második szabály azt határozza meg, hogy ha a lista első eleme bárhol máshol megjelenik a listában, akkor azt el kell távolítani (mivel ez egy duplikátum), és a feldolgozásnak a lista többi részének kell folytatódnia az remove_dups függvény ismételt meghívásával a lista első elemével abbahagyta. A végső szabály előírja, hogy ha a lista első tagja nincs máshol a listában, akkor azt meg kell őrizni, és a feldolgozást folytatni kell.

A Techwalla kompenzációt kereshet a történetben szereplő kapcsolt linkeken keresztül.