Copyright | Exercitium (03-06-14) |
---|---|
License | GPL-3 |
Maintainer | JoseA.Alonso@gmail.com |
Safe Haskell | Safe |
Language | Haskell2010 |
Alergias
Description
Código de las alergias
Para la determinación de las alergia se utiliza los siguientes códigos para los alérgenos:
Huevos ........ 1 Cacahuetes .... 2 Mariscos ...... 4 Fresas ........ 8 Tomates ....... 16 Chocolate ..... 32 Polen ......... 64 Gatos ......... 128
Así, si Juan es alérgico a los cacahuetes y al chocolate, su puntuación es 34 (es decir, 2+32).
Los alérgenos se representan mediante el siguiente tipo de dato
data Alergeno = Huevos | Cacahuetes | Mariscos | Fresas | Tomates | Chocolate | Polen | Gatos deriving (Enum, Eq, Show, Bounded)
Definir la función
alergias :: Int -> [Alergeno]
tal que (alergias n) es la lista de alergias correspondiente a una puntuación n. Por ejemplo,
>>>
alergias 0
[]>>>
alergias 1
[Huevos]>>>
alergias 2
[Cacahuetes]>>>
alergias 8
[Fresas]>>>
alergias 3
[Huevos,Cacahuetes]>>>
alergias 5
[Huevos,Mariscos]>>>
alergias 248
[Fresas,Tomates,Chocolate,Polen,Gatos]>>>
alergias 255
[Huevos,Cacahuetes,Mariscos,Fresas,Tomates,Chocolate,Polen,Gatos]>>>
alergias 509
[Huevos,Mariscos,Fresas,Tomates,Chocolate,Polen,Gatos]
Documentation
Tipo de alergenos.
int2bin :: Int -> [Int] Source #
(int2bin n) es la representación binaria del número n. Por ejemplo,
>>>
int2bin 10
[0,1,0,1]
ya que 10 = 0*1 + 1*2 + 0*4 + 1*8
descomposicion :: Int -> [Int] Source #
(descomposicion n) es la descomposición de n (módulo 256) como sumas de potencias de 2. Por ejemplo,
>>>
descomposicion 3
[1,2]>>>
descomposicion 5
[1,4]>>>
descomposicion 248
[8,16,32,64,128]>>>
descomposicion 255
[1,2,4,8,16,32,64,128]>>>
descomposicion 509
[1,4,8,16,32,64,128]
prop_equiv_alergias :: NonNegative Int -> Bool Source #
Comprobación de la equivalencia de las definiciones de alergia
.
>>>
quickCheck prop_equiv_alergias
+++ OK, passed 100 tests.