Copyright | Exercitium (23-04-14) |
---|---|
License | GPL-3 |
Maintainer | JoseA.Alonso@gmail.com |
Safe Haskell | Safe |
Language | Haskell2010 |
Bandera_tricolor
Description
El problema de la bandera tricolor consiste en lo siguiente: Dada un lista de objetos xs que pueden ser rojos, amarillos o morados, se pide devolver una lista ys que contiene los elementos de xs, primero los rojos, luego los amarillos y por último los morados.
Definir el tipo de dato Color para representar los colores con los constructores R, A y M correspondientes al rojo, azul y morado y la función
banderaTricolor :: [Color] -> [Color]
tal que (banderaTricolor xs) es la bandera tricolor formada con los elementos de xs. Por ejemplo,
>>>
banderaTricolor [M,R,A,A,R,R,A,M,M]
[R,R,R,A,A,A,M,M,M]>>>
banderaTricolor [M,R,A,R,R,A]
[R,R,R,A,A,M]
- data Color
- banderaTricolor :: [Color] -> [Color]
- banderaTricolor2 :: [Color] -> [Color]
- banderaTricolor3 :: [Color] -> [Color]
- banderaTricolor4 :: [Color] -> [Color]
- banderaTricolor5 :: [Color] -> [Color]
- prop_banderaTricolor :: [Color] -> Bool
- verifica_banderaTricolor :: IO ()
Documentation
Definición de los colores
banderaTricolor :: [Color] -> [Color] Source #
1ª definición
banderaTricolor2 :: [Color] -> [Color] Source #
2ª definición (por comprensión):
banderaTricolor3 :: [Color] -> [Color] Source #
3ª definición (por comprensión y concat):
banderaTricolor4 :: [Color] -> [Color] Source #
4ª definición (por recursión):
banderaTricolor5 :: [Color] -> [Color] Source #
5ª definición (por recursión):
prop_banderaTricolor :: [Color] -> Bool Source #
(prop_banderaTricolor xs) se verifica si todas las definiciones de banderaTricolor son equivalentes para xs. Por ejemplo,
>>>
prop_banderaTricolor [M,R,A,A,R,R,A,M,M]
True>>>
prop_banderaTricolor [M,R,A,R,R,A]
True
verifica_banderaTricolor :: IO () Source #
Comprueba la equivalencia de las definiciones
>>>
verifica_banderaTricolor
+++ OK, passed 100 tests.