Escolar Documentos
Profissional Documentos
Cultura Documentos
Alguns predicados para manipulao de listas so os descritos a seguir. Observa-se que um mesmo predicado pode ser
utilizado para mais de uma funo.
a) delete( L1, E, L2 ): remove o elemento E da lista L1, resultando em L2.
Verifique o resultado das consultas:
?- delete([cerebro, pinky, remy, jerry], remy, L).
?- delete([cerebro, remy, remy, jerry], remy, L).
?- delete([cerebro, remy, remy, jerry], remy, [cerebro, jerry]).
b) findall( E, Meta, L ): cria uma lista L com todos os elementos E que satisfazem a Meta.
Verifique o resultado das consultas:
?- findall(X, rato(X), L).
?- findall(X, (cirurgiao_patela(X); peixe_palhaco(X)), L), write(L).
c) length( L, I ): retorna true se o nmero de elementos da lista L igual a I, retorna false, caso contrrio.
Verifique o resultado das consultas:
?- length([cerebro, pinky, remy, jerry], 4).
?- length([cerebro, remy, remy, jerry], 3).
?- delete([cerebro, remy, remy, jerry], remy, L), length(L, I).
d) nth1( I, L, E ): retorna true se o elemento E est na posio I da lista L, retorna false, caso contrrio.
Verifique o resultado das consultas:
?????-
e) sort( L1, L2 ): ordena e elimina os elementos duplicados da lista L1, resultando na lista L2.
Verifique o resultado das consultas:
?- sort([cerebro, pinky, remy, jerry], L).
?- sort([cerebro, remy, remy, jerry], L).
?- findall(X, rato(X), L1), sort(L1, L2), write(L2).
exemplo
10 \= 2
X is 10 / 2
passo 2: obtenha no AVA (ava.furb.br/unidade 04) a base de fatos e regras sobre filmes (filmes.pl).
passo 3: carregue a base no SWI-PROLOG.
passo 4: utilizando os fatos j definidos e os predicados para manipulao de listas, edite o arquivo filmes.pl e inclua
regras para responder s seguintes perguntas, como no exemplo abaixo:
pergunta
p1
p2
p3
p4
p5
p6
p7
p8
p9
p14
regra
p1 :- findall(Titulo, filme(X, Titulo, Y, Z), L),
write(' filmes: '), write(L).