| 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.