Exercitium1-0.1.0.0: Problemas de Exercitium (Volumen 1)

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

Lista_cuadrada

Description

Definir la función

listaCuadrada :: Int -> a -> [a] -> [[a]]

tal que (listaCuadrada n x xs) es una lista de n listas de longitud n formadas con los elementos de xs completada con x, si no xs no tiene suficientes elementos. Por ejemplo,

>>> listaCuadrada 3 7 [0,3,5,2,4]
[[0,3,5],[2,4,7],[7,7,7]]
>>> listaCuadrada 3 7 [0..]
[[0,1,2],[3,4,5],[6,7,8]]
>>> listaCuadrada 2 'p' "eva"
["ev","ap"]
>>> listaCuadrada 2 'p' ['a'..]
["ab","cd"]
>>> listaCuadrada 1 0 ([]::[Int])
[[0]]

Synopsis

Documentation

listaCuadrada :: Int -> a -> [a] -> [[a]] Source #

1ª definición (con auxiliar).

grupos :: Int -> [a] -> [[a]] Source #

(grupos n xs) es la lista obtenida agrupando los elementos de xs en grupos de n elementos, salvo el último que puede tener menos. Por ejemplo,

>>> grupos 2 [4,2,5,7,6]
[[4,2],[5,7],[6]]
>>> take 3 (grupos 3 [1..])
[[1,2,3],[4,5,6],[7,8,9]]

listaCuadrada2 :: Int -> a -> [a] -> [[a]] Source #

2ª definición (por comprensión).

listaCuadrada3 :: Int -> a -> [a] -> [[a]] Source #

3ª definición (por iteración).

listaCuadrada4 :: Int -> a -> [a] -> [[a]] Source #

4ª definición (por iteración sin el último argumento).

prop_listaCuadrada :: NonNegative Int -> Int -> [Int] -> Bool Source #

(prop_listaCuadrada n x xs) se verifica si las definiciones de listaCuadrada son equivalentes sobre n, x, xs. Por ejemplo,

>>> prop_listaCuadrada (NonNegative 3) 7 [0,3,5,2,4]
True
>>> prop_listaCuadrada (NonNegative 3) 7 [0..]
True

verifica_listaCuadrada :: IO () Source #

Comprueba la equivalencia de las definiciones de listaCuadrada.

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