Lista 2 Prolog (turma B)
Instruções
A lista devera ser entregue em um diskette com o seu RA. Todas as
questoes da lista devem estar no arquivo lista4.pl. Cada
questão pede para voce definir uma função, defina-a com o nome
pedido pois a correção será automatica. Voce pode definir suas
funcoes auxiliares no arquivo.
Esta lista deverá ser entregue no dia 20/6.
Questões
- Um grafo direcionado é representado por uma lista [
arco(a,b), arco(a,d), arco(b,f) ...] onde arco(a,b)
representa que existem um arco de a para b. Escreva
o predicado fontes(G,L) que é verdadeira se L é a lista de
todos as fontes (verices que nao sao apontados por ninguem) do grafo
G, representado da forma acima.
- Um grafo direcionado é representado por fatos da forma
aponta(a,[b,d,g]) que indica que existem arcos de a para b, d
e g. Escreva o predicado fontes(L) que é verdadeiro se L é a
lista de todas as fontes
do grafo.
- Uma matriz é representada por uma lista de listas onde as listas
internas representam as linhas da matriz. Por exemplo
[[1,2],[7,8]], representa a matriz
1 2
7 8
Escreva o predicado coluna(M,N,C) que é verdadeiro se C é uma
lista que representa a N-esima coluna da matriz M.
- Assuma um banco de dados com os predicados
casou(homem, mulher, ano) que significa que
homem casou com mulher no ano ano,
separou( homem, mulher, ano), faleceu(pessoa,
ano). O banco de dados é consistente, isto é ninguem casou
depois que moreu, e assuma que a cada ano uma pessoa so pode
casar ou separat uma vez.
Escreva os predicados:
- viuvo(X) que é verdadeiro se X é um homem vivo
em 2000 que estava casado com uma mulher quando ela morreu e não se
casou desde então.
- recasados(X,Y) se X e Y casaram, se separaram e depois
casaram de novo (não importa em que ano, se estão casados ainda, ou
vivos, etc).
- viuva-negra(X) que é verdadeiro se X casou-se 2 ou mais
vezes com algum homem que morreu no mesmo ano do casamento (a viuva
negra não precisa estar viva em 2000, e nem todos os maridos tem que ter
morrido no mesmo ano do casamento).
- Suponha que voce tem uma lista da forma
[ notas(aluno1,nota1-1,nota1-2,nota1-3),
notas(aluno2,nota2-1,nota2-2,nota2-3), ...]
onde aluno1 é o nome do aluno, e nota1-1, nota1-2 e
nota1-3 são as notas de LISP, Prolog e Java do aluno neste
curso. Na media final, Java conta com peso 2.
Escreva o predicado media_passou(L,A) que é verdade se L é uma
lista acima e A é a media apenas dos alunos que
tiraram media >= 5.