Lista 1 LISP (turma B e MC600)
Instruções:
- coloque apenas as funções pedidas (mais as funções auxiliares) no
arquivo "ra123456.lsp" se seu RA é 123456. Não coloque no arquivo os
seus testes.
- não use caracteres acentuados e salve seu arquivo como ASCII ( e
nao UTF8)
- coloque o seguinte encantamento no inicio do arquivo (substitua
"123456" pelo seu RA
(setf pacote (or (find-package "123456") (make-package "123456")))
(in-package "123456")
(export '(impares prof-media mais-comum arvore-rev ))
- me mande um email com o titulo "lisp lista 1" e com o arquivo
como attachment
Definições:
Uma lista que contem sub listas, e sub-sublistas pode ser vista
como uma arvore.
A lista (a ((b c) d) e) pode ser vista como a árvore
+ 0
/ | \
a + e 1
/ \
+ d 2
/ \
b c 3
Nesta lista, chamaremos de uma árvore uma lista que contem
sub-listas e subsub-listas.
O número ao lado da arvore é a profundidade do nivel.
Questões
- Escreva a função impares que dado uma lista (sem
sub-listas) retorna uma lista com os elementos que estão nas posições
impares (o primeiro elemento da lista esta na posição 1)
Ex: (impares '(e 5 t w q 3 4)) retorna (e t q 4)
Ex: (impares '()) retorna ()
- Escreva a função prof-media que dado átomo e uma
árvore, retorna a profundidade media do átomo na árvore
Ex: (prof-media 'r '( e (r (t)) (t (r)) )) retorna
5/2
- Escreva a função mais-comum que dado um string que
representa um arquivo que contem texto (com apenas um branco separando
as palavras e sem pontuação), retorna uma lista com a palavra mais
comum e quantas vezes ela aparece no texto. Não considere maisculas e
minusculas como diferente. (Uma hash table cai como
uma luga para esse problema, mas o teste de igualdade deve ser pensado)
Se o arquivo dado.txt contém o texto
aaa bbb aaa ccc AAA
aaa Baa Aaa ddd ddd ddd
então (mais-comum "dado.txt") retorna ("aaa" 5)
- Escreva a função arvore-rev que reverte uma arvore em
todos os niveis
(arvore-rev '(a (b c) (( d e) f) g)) retorna
(g (f (e d)) (c b) a)