Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal da Grande Dourados Faculdade de Cieˆncias Exatas e Tecnologias Bacharelado em Sistemas de Informac¸a˜o Paradigmas em Linguagens de Programac¸a˜o Lista de Exerc´ıcios 3 – LISP Prof. M.Sc. Rodrigo Porf´ırio da Silva Sacchi 1. Desenhe as representac¸o˜es gra´ficas de dados para as seguintes listas: (a) (A 17 −3) (b) ((A 5 C) %) (c) ((A 5 C) (%)) (d) (NIL 6 A) (e) ((A B)) (f) (∗ ( + 15 (− 6 4)) −3) 2. Qual e´ o CAR de cada uma das listas do exerc´ıcio 1? 3. Qual e´ o CDR de cada uma das listas do exerc´ıcio 1? 4. Escreva as declarac¸o˜es necessa´rias, usando CAR e CDR, para obter os seguintes valores das listas do exerc´ıcio 1: (a) (−3) e (−3 −3) (b) (C %) e (A C %) (c) (5 %) e (5 (%)) (d) (6 (6)) e (6 (6) 6) (e) ((B) A) e (A ((B) B)) 1 5. Fac¸a um programa para encontrar a u´ltima caixa de uma lista. Exem- plo: (my-last ’(a b c d)) (D) 6. Fac¸a um programa para encontrar o u´ltimo e o penu´ltimo elementos de uma lista. Exemplo: * (my-but-last ’(a b c d)) (C D) 7. Fac¸a um programa para encontrar o k-e´simo elemento de uma lista. O primeiro elemento tem ı´ndice 1. Exemplo: * (element-at ’(a b c d e) 3) C 8. Fac¸a um programa para encontrar o nu´mero de elementos em uma lista. 9. Fac¸a um programa que dada uma lista, a devolva de forma revertida. 10. Fac¸a um programa que verifique se uma lista e´ pal´ındrome. Uma pa- l´ındrome e´ uma palavra, nu´mero ou frase que pode ser lida igualmente comec¸ando pelo in´ıcio ou pelo fim. Exemplo: * my-palin( ’(frase)) (x a m a x). (socoram-me subi no oˆnibus em marrocos). 11. Fac¸a um programa que elimine duplicatas de uma lista de elementos. Se a lista conte´m elementos repetidos, eles devem ser trocados por uma simples co´pia do elemento. A ordem dos elementos na˜o deve ser alterada. Exemplo: * (compress ’(a a a a b c c a a d e e e e)) (A B C A D E) 12. Fac¸a um programa que remove o k-e´simo elemento de uma lista. Exem- plo: * (remove-at ’(a b c d) 2) (A C D) 13. Fac¸a um programa que determine o ma´ximo divisor comum entre dois inteiros positivos usando o algoritmo de Euclides. Exemplo: * (my-gcd 36 63) 9 2 14. Fac¸a um programa que determine os fatores primos de um inteiro posi- tivo. Construa uma lista contendo esses fatores em ordem ascendente. Exemplo: * (prime-factors 315) (3 3 5 7) 3
Compartilhar