>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Como Remover Duplicatas em Prolog

Prolog é linguagem declarativa usada em inteligência artificial e linguística. Diferente de linguagens procedurais, programas Prolog são definidos como série de regras e equações, não passos. O código a seguir descreve como remover duplicatas de uma lista em Prolog.

Passo 1

Abra um editor de texto, como Bloco de Notas, e salve como "remove_dups.pl".

Passo 2

Digite o código entre as barras (sem as barras):

% remove_dups(+List, -NewList):
% New List is bound to List, but with duplicate items removed.
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" tem três regras. A primeira: se lista vazia, retorna. A segunda: se o primeiro item aparece no resto da lista, remove (duplicata) e continua com o resto chamando remove_dups recursivamente. A terceira: se o primeiro membro não está no resto, mantém e continua.

Passo 3

Salve com "Ctrl + S".

Dica

Linguagens como C e Java usam loops iterativos; linguagens declarativas/funcionais como Prolog usam recursão — chamam a mesma função em subconjuntos menores. Alguns problemas são mais fáceis com recursão, embora difícil para programadores acostumados só a loops iterativos.