Lista 1 Prolog

Instruções

Esta lista deverá ser entregue no dia 7/6.

Questões

  1. Num banco de dados Prolog, com os predicados genitor(X,Y) se X é um dos pais biologicos de Y, homem(X) se X é homem, mulher(X) se X é mulher, e casado(X,Y) se X esta casado com Y. Defina os predicados:
  2. Escreva o predicado poda(X,Y,N) que é verdadeiro se Y é o resultado de substituir em X toda a sublista com profundidade igual ou maior que N por [].

    Ex: poda([[a,b],[c],[c,[e,f],g]] , [[a,b],[c],[c,[],g]] , 2) é verdadeiro.

  3. Escreva o predicado superreverte(X,Y) que é verdadeiro se Y é o resultado de reverter X e todas suas sublistas.

    Ex: superreverte([[e,r],t,[w,q]] , [[q,w],t,[r,e]]) é verdadeiro

  4. Escreva o predicado media(X,N) que é verdadeiro se N é a media dos elementos de X (todos numericos).
  5. Vamos assumir que uma arvore de busca binaria é representada em pela seguinte estrutura

    arv(chave,valor,subarvore-a-esquerda,subarvore-a-direita).

    O simbolo nil representa a arvore vazia

    assim ar(4,a,ar(2,b,ar(1,h,nil,nil),ar(3,c,nil,nil)),ar(7,a,nil,ar(9,g,nil,nil))) representa a arvore:

    4,a / \ 2,b 7,a / \ \ 1,h 3,c 9,g Escreva o predicado removearv(Ch,ARVvelha,ARVnova) que é verdadeiro se ARVnova é o resultado de remover o item com chave Ch da arvore binaria representada por ARVvelha

Jacques Wainer
Last modified: Fri Jun 1 11:17:50 EST 2001