Lista 2 Prolog (turma A)
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 1/5.
Questões
- Um DAG é 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
sorvedouro(G,L) que é verdadeira se L é a lista de todos os
sorvedouros do DAG G, representado da forma acima.
- Um DAG é 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 (verices que nao sao apontados por ninguem)
do DAG.
- 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.
- Escreva o predicado msort(A,B) que é verdadeiro se
B for o resultado ordenar A usando o merge sort. (Como algo
interessante compare a velocidade do merge sort com o do quick
sort dado em classe).
- 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 passou(L,A) que é verdade se L é uma
lista acima e A é uma lista com apenas o nome dos alunos que
tiraram media >= 5.