Created
October 9, 2014 02:24
-
-
Save andersonfraga/45285d6168ae3a7b6e75 to your computer and use it in GitHub Desktop.
E em 30mins brincando com esse tal de AliceML...
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(******************** | |
Especifique a função mediaListaSemPares que recebe uma lista de inteiros umaLista e retorna a média dos elementos de umaLista, descartando os valores pares (listas com 1 ou nenhum elemento, retornam vazias) | |
********************) | |
fun listaSemPares umaLista = List.filter (fn x => x mod 2 <> 0) umaLista; | |
fun somaLista [] = 0 | |
| somaLista (x::res) = x + somaLista res; | |
fun mediaListaSemPares [] = 0.0 | |
| mediaListaSemPares umaLista = | |
let | |
val listaImpares = listaSemPares umaLista | |
in | |
if length listaImpares > 0 | |
then real(somaLista listaImpares) / real(length listaImpares) | |
else 0.0 | |
end; | |
(******************* | |
Especifique a função listaSemMaior que recebe uma lista de inteiros umaLista e retorna outra lista igual a umaLista sendo excluído o maior valor. | |
*******************) | |
fun removeMaior(a, []) = [] | |
| removeMaior(a, x::xs) = | |
if a > x | |
then x::(removeMaior(a, xs)) | |
else a::(removeMaior(x, xs)); | |
fun listaSemMaior [] = nil | |
| listaSemMaior(x::umaLista) = removeMaior(x, umaLista); | |
(********************* | |
Especifique a função espelhaDobraLista que recebe umaLista e retorna outra lista de forma que a primeira parte resultante é igual a umaLista em sequência invertida e a segunda parte é esta mesma lista na sequência original. | |
*********************) | |
fun espelhaDobraLista [] = [] | |
| espelhaDobraLista umaLista = rev(umaLista) @ umaLista; | |
(******************* | |
Especifique a função semDoisExtremos que recebe uma lista umaLista e retorna uma lista semelhante sem os dois elementos extremos de umaLista (o primeiro e o último). Se umaLista tiver menos de dois elementos, retorna nil. | |
*******************) | |
fun semDoisExtremos [] = nil | |
| semDoisExtremos(x::umaLista) = | |
let | |
val novaLista = rev(umaLista) | |
in | |
if length novaLista = 0 | |
then nil | |
else rev(tl(novaLista)) | |
end; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment