Baixe o app para aproveitar ainda mais
Prévia do material em texto
Curso: Engenharia de Computação Disciplina: Programação I Professor: Rodolfo da Silva Villaça Nona Aula de Laboratório Requisito: use definições por compreensão de listas! 1. Defina uma função que, dado um número inteiro n, retorne a soma dos quadrados dos inteiros 1 a n. 2. Construa uma função de ordem mais alta chamada mapfiltrar, que recebe como parâmetros: − Uma propriedade p (função unária que retorna Bool); − Uma função unária f qualquer; − Uma lista x; A função mapfiltrar deve aplicar a propriedade p sobre os elementos da lista x. Aqueles que satisfizerem a propriedade devem ser transformados usando a função f. A resposta será uma lista com esses elementos. Use map e filter na sua definição. Exemplo: >mapfiltrar even vezes_3 [1..5] [6,12] 3. Faça uma função que recebe uma string (lista de caracteres) como parâmetro e retorne uma lista de palavras da string original. Considere que apenas o caractere espaço é o separador. Trate sinais pontuação e caracteres especiais como se fossem letras. Exemplo: >quebraFrase "Oi galera da computação." ["Oi","galera", "da", "computação."] 4. Considere uma lista de divisores, ex. [5,7]. Este é o parâmetro a ser aplicado a uma outra lista, tal como [10..100]. O resultado é uma sublista com todos os divisores de 5 e 7 presentes na segunda lista. Exemplo: >filtro [5,7] [5,6,10,12,14,20,28,35] [35] 5. Forneça as respostas das avaliações das expressões abaixo. a) [(snd p,fst p) | p <- [(0,1), (2,4), (2,5), (3,6), (7,14), (4,10)], ((snd p) == (fst p))] b) [(x/=y) | (x,y) <- [(0,1), (4,4), (6,6), (3,6), (7,7), (4,10)]] c) tail [(x,y) | (x,y) <- [(0,1), (2,3), (3,6), (3,8), (7,7), (4,11)], odd x, even y] d) [(x+1,x) | x <- [1..10]] 6. Escreva a função zipar, que agrupa 2 listas intercalando os seus elementos em pares. A lista resultante é formada pelo par (a,x), da cabeça corrente das duas listas a:b e x:y. Exemplo: >zipar [1,2,3,4] ['a','b'] [(1,'a'),(2,'b')]
Compartilhar