1) Dado um string da forma "aaaabbbcdddeaa" escreva uma funcao que codifica o string da seguinte forma [('a',4),'(b',3)('c',1),('d',3),('e',1),('a',2)] Faca a funcao de decodificacao tambem, 2) Dado um string, compute a letra mais comum neste sting 3) dado um arquivo de texto, compute as 10 palavras mais comuns no texto, removendo numeros e pontuacoes e convertendo todas as letras para minusculo 3,1) escreva uma funcao que dado uma lista ordenada, um inteiro k e um dado, insere o dado na posicao correta da lista, garantindo que a lista nao tenha mais que k dados depois da insercao. 3,2) modifique 3) para usar esta lista em vez de usar um sort. 4) Escreva um funcao que dado uma lista e k, retorna deterministicamente cada k-esimo elento da lista, 5) escreva uma funcao que dado uma lista, k e uma lista de floats entre 0 e 1 retorna os elementos da lista com probabilidaidade 1/k 6) escreva um programa em haskel que dado o stdin imprime o numero de linhas da entrada (faca um programa usando o getContents e outo usando o getLines) 7) escreva um programa em haskell que dado o stdin imprime o numero de caracteres da entrada (faca um programa usando o getContents e outo usando o getLines) 8) dado a definicao data Arvore a = Vazio | Folha a | No (Arvore a) (Arvore b) escreva a funcao que remove um elemento da Arvore, assumindo que ela 'e uma arvore de busca binaria