Professional Documents
Culture Documents
o Funcional
Programaca
Lista de Exerccios 02
o recursiva da funca
o concatena ::
1. Escreva a definica
concatena uma lista de listas.
Exemplo:
concatena [ [1,2], [3,4] ] == [1,2,3,4]
o recursiva da funca
o replica ::
2. Escreva a definica
produz uma lista com n elementos iguais.
o de listas pelo m
o:
13. Ordenaca
etodo de seleca
Exemplo:
o recursiva da funca
o minimo ::
(a) Escreva definica
calcula o menor valor duma lista n
ao-vazia.
replica 3 1 == [1,1,1]
replica 3 a == "aaa"
o recursiva da funca
o elemento ::
3. Escreva a definica
Bool que testa se um valor ocorre numa lista
o recursiva da funca
o remove :: Eq a => a -> [a] ->
(b) Escreva uma definica
[a] que remove a primeira ocorrencia dum valor numa lista.
Exemplo:
a lista vazia j
a est
a ordenada;
` cabeca o menor elemento m
para ordenar uma lista n
ao vazia, colocamos a
e recursivamente ordenamos a cauda sem o elemento m.
Exemplo:
sumsq n = 12 + 22 + 32 + . . . + n2
o tamanho, que retorna o n
16. Defina a funca
umero de elementos em uma lista usando
foldr::(a -> b -> b) -> b -> [a] -> b e foldl::(b -> a -> b) -> b ->
[a] -> b.
o da funca
o concatena :: [[a]] -> [a] que concatena uma
17. Escreva a definica
o foldr::(a -> b -> b) -> b -> [a] -> b
lista de listas usando a funca
o da funca
o inverte1 :: [a] -> [a] que inverte uma lista
18. Escreva a definica
o foldr:(a -> b -> b) -> b -> [a] -> b
usando a funca
o recursiva:
Dica: Considere a seguinte definica
i n v e r t e : : [ a ] > [ a ]
inverte [] = []
i n v e r t e xs = ( l a s t xs ) : i n v e r t e ( i n i t xs )
Exemplo:
rotEsq 0 "asdfg"== "asdfg"
o da funca
o inverte2 :: [a] -> [a] que inverte uma lista
19. Escreva a definica
o foldl::(b -> a -> b) -> b -> [a] -> b
usando a funca
o recursiva:
Dica: Considere a seguinte definica
i n v e r t e : : [ a ] > [ a ]
inverte [] = []
i n v e r t e ( x : xs ) = i n v e r t e xs ++ [ x ]
Exemplo:
o mystery faz?
20. O que a funca
o da funca
o elem :: Eq a => a -> [a] -> Bool que testa se
21. Escreva a definica
o any.
um valor ocorre em uma lista usando a funca
o de chaves
INPUT: Duas listas a e b sem repetica
Dica: Crie uma lista de testes x==y tal que y e um elemento da lista.
o insertSort :: Ord a => [a] -> [a] para
22. Mostre que pode definir funca
o usando foldr e insert.
ordenar uma lista pelo metodo de inserca
o map f :: [a] -> [a] usando a funca
o foldr.
23. Redefina a funca
o filter p :: [a] -> [a] usando a funca
o foldr.
24. Redefine a funca
es foldl1 e foldr1 do prel
25. As funco
udio-padr
ao s
ao variantes de foldl e foldr que
s
o est
ao definidas para listas com pelo menos um elemento (i.e. n
ao-vazias).foldl1
o de agregaca
o e uma lista) e
e foldr1 tem apenas dois argumentos (uma operaca
es seguintes.
o seu resultado e dado pelas equaco
o
OUTPUT: Lista das chaves de a e b sem repetica
Exemplos:
uniao [1,2,3] [2,4,6] == [1,2,3,4,6]
uniao [4,5] [1] == [4,5,1]
o elemento
Use a funca
o recurdiva somaDigitos ::
9. Defina uma funca
dos dgitos de um n
umero.
f oldl1()[x1 , . . . , xn ] = (. . . (x1 x2 ) x3 . . .) xn
f oldr1()[x1 , . . . , xn ] = x1 (. . . (xn1 xn ) . . .)
es maximo, minimo :: Ord a => [a] -> a do
Mostre que pode definir as funco
prel
udio-padr
ao (que calculam, respectivamente, o maior e o menor elemento duma
lista n
ao-vazia) usando foldl1 e foldr1 .
o n
o isSorted que retorna verdadeiro se a
26. Escreva a definica
ao-recursiva da funca
o all.
lista est
a ordenada e falso, caso contr
ario usando a funca
isSorted ::
Dica: Crie uma lista com todos os pares adjacentes (x,y) e teste se em todos os pares
x<=y e verdadeiro.