Lista 2 LISP (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 lista2.lsp. 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 6/4. As questões marcadas com ** não precisam estar 100% certas para a lista valer.

Questões

  1. 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-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 a funcao L2-1 que dado umalista acima imprime o Nome e nota final dos alunos que tiraram mais que 5.

  2. Escreva a funcao L2-2 que dado uma lista de atomos, retorna uma lista de pares onde o primeiro elemento é um atomo da lista original, e o segundo é a quantidade de vezes que ele aparece. O programa deve percorrer a lista original apenas uma vez (suponha que ela tem varios milhares de atomos)

    Ex: (l2-2 '(a b a d a b b a d d b a ) retorna ((a 5) (b 4) (d 3))

  3. Um DAG é 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 L2-3 que dado uma lista acima retorna a lista dos sorvedouros deste DAG, isto é os vertices que nao tem arcos saindo deles. Pense em usar uma Hash table para representar o grafo.

  4. Escreva a funcao L2-4 que recebe duas matrizes, verifica se é possivel multiplica-las, e se possivel retorna o produto delas, senao retorna nil.

  5. É so isso , não pensei em nenhuma outra questao.