>> Tecnologia eletrônica >  >> Lar inteligente >> Vida Inteligente

Como remover duplicatas no Prolog


Prolog é uma linguagem de programação declarativa comumente usada em inteligência artificial e pesquisa linguística. Ao contrário das linguagens procedurais mais comuns, a maioria dos programas Prolog são definidos como uma série de regras e equações, em vez de uma série de etapas. O código a seguir descreve o processo para remover duplicatas de uma lista no Prolog.

Etapa 1


Abra um editor de texto, como o Bloco de Notas, e salve seu arquivo com o nome "remove_dups.pl".

Etapa 2


Digite o código entre as barras (deixando as próprias barras de fora):

/ % remove_dups(+List, -NewList):% Nova Lista está vinculada à Lista, mas com itens duplicados removidos. remove_dups([], []).

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

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

A função "remove_dups" é definida como uma série de três regras. A primeira regra ("remove_dups([],[].)") especifica que se a lista estiver vazia, nada deve ser feito; a função deve simplesmente retornar. A segunda regra especifica que, se o primeiro item da lista aparecer em qualquer outro lugar da lista, ele deve ser removido (já que é uma duplicata) e o processamento deve continuar usando o restante da lista chamando a função remove_dups novamente com o primeiro item na lista deixada. A regra final especifica que, se o primeiro membro da lista não estiver presente em nenhum outro lugar da lista, ele deve ser mantido e o processamento deve continuar.

Etapa 3


Salve seu trabalho pressionando "Ctrl" e "S" juntos.

Dica


Enquanto linguagens como C e Java geralmente resolvem problemas usando loops iterativos, linguagens declarativas e funcionais como Prolog geralmente resolvem problemas de forma recursiva ou chamando repetidamente a mesma função em um conjunto cada vez menor do total de dados. Alguns problemas são muito mais fáceis de resolver com recursão, embora possa ser difícil de aprender para programadores acostumados a usar apenas loops iterativos para resolver problemas.