Exercitium1-0.1.0.0: Problemas de Exercitium (Volumen 1)

CopyrightExercitium (23-04-14)
LicenseGPL-3
MaintainerJoseA.Alonso@gmail.com
Safe HaskellSafe
LanguageHaskell2010

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]

Synopsis

Documentation

data Color Source #

Definición de los colores

Constructors

R 
A 
M 

Instances

Enum Color Source # 
Eq Color Source # 

Methods

(==) :: Color -> Color -> Bool #

(/=) :: Color -> Color -> Bool #

Ord Color Source # 

Methods

compare :: Color -> Color -> Ordering #

(<) :: Color -> Color -> Bool #

(<=) :: Color -> Color -> Bool #

(>) :: Color -> Color -> Bool #

(>=) :: Color -> Color -> Bool #

max :: Color -> Color -> Color #

min :: Color -> Color -> Color #

Show Color Source # 

Methods

showsPrec :: Int -> Color -> ShowS #

show :: Color -> String #

showList :: [Color] -> ShowS #

Arbitrary Color Source #

Incluye el tipo Color en Arbitrary

Methods

arbitrary :: Gen Color #

shrink :: Color -> [Color] #

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.