Exercitium1-0.1.0.0: Problemas de Exercitium (Volumen 1)

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

Segmentos_consecutivos

Description

Definir la función

segmentos :: (Enum a, Eq a) => [a] -> [[a]]

tal que (segmentos xss) es la lista de los segmentos de xss formados por elementos consecutivos. Por ejemplo,

>>> segmentos [1,2,5,6,4]
[[1,2],[5,6],[4]]
>>> segmentos [1,2,3,4,7,8,9]
[[1,2,3,4],[7,8,9]]
>>> segmentos "abbccddeeebc"
["ab","bc","cd","de","e","e","bc"]

Nota: Se puede usar la función succ tal que (succ x) es el sucesor de x. Por ejemplo,

succ 3    ==  4
succ 'c'  ==  'd'

Synopsis

Documentation

segmentos :: (Enum a, Eq a) => [a] -> [[a]] Source #

1ª definición (por recursión).

segmentos2 :: (Enum a, Eq a) => [a] -> [[a]] Source #

2ª definición.

inicial :: (Enum a, Eq a) => [a] -> [a] Source #

(inicial xs) es el segmento inicial de xs formado por elementos consecutivos. Por ejemplo,

>>> inicial [1,2,5,6,4]
[1,2]
>>> inicial "abccddeeebc"
"abc"

inicial2 :: (Enum a, Eq a) => [a] -> [a] Source #

2ª definición de inicial (con uncurry)

>>> inicial2 [1,2,5,6,4]
[1,2]
>>> inicial2 "abccddeeebc"
"abc"

prop_segmentos :: (Enum a, Eq a) => [a] -> Bool Source #

(prop_segmentos xs) se verifica si las definiciones de segmentos son equivalentes sobre xs. Por ejemplo,

>>> prop_segmentos [1,2,5,6,4]
True
>>> prop_segmentos [1,2,3,4,7,8,9]
True
>>> prop_segmentos "abbccddeeebc"
True

verifica_segmentos :: IO () Source #

Comprueba la equivalencia de las definiciones de segmentos.

>>> verifica_segmentos
+++ OK, passed 100 tests.