1 Um grafo direcionado é representado por uma lista ( (a b) (a d) (b f) ...) onde (a b) representa que existem um arco de a para b. Escreva a funcao LOOP que dado uma lista acima retorna a lista dos vertices do grafo de onde saem loops de tamanho 1. Isto é, o vertice A deve estar na lista a ser retornada se existir um vertice X tal que exista um arco de A para X e de X para A. (Obviamente se de A sai um loop de tamanho 1 entao de X tambem sai um.) Pense em usar uma Hash table para representar o grafo.
2 Suponha que voce tem uma lista da forma ( ( aluno1 aluno2 ...) ((nota1-1 nota1-2 nota1-3) (nota2-1 nota2-2 nota2-3) ...)) onde aluno1 é um string com o nome do aluno, e nota1-* sao numeros ou nil. A nota final do aluno é a media das duas melhores notas. nil significa que o aluno nao fez aquela prova e portanto tirou 0.
Escreva a funcao PASSOU que dado uma lista acima imprime o Nome e nota final dos alunos que tiraram mais que 5.
3Escreva a funcao MULTI que recebe duas matrizes, verifica se é possivel multiplica-las, e se possivel retorna o produto delas, senao retorna nil.