Exercitium1-0.1.0.0: Problemas de Exercitium (Volumen 1)

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

Pares_adyacentes_iguales

Description

Definir la función

numeroParesAdyacentesIguales :: Eq a => [[a]] -> Int

tal que (numeroParesAdyacentesIguales xss) es el número de pares de elementos consecutivos (en la misma fila o columna) iguales de la matriz xss. Por ejemplo,

>>> numeroParesAdyacentesIguales [[0,1],[0,2]]
1
>>> numeroParesAdyacentesIguales [[0,0],[1,2]]
1
>>> numeroParesAdyacentesIguales [[0,1],[0,0]]
2
>>> numeroParesAdyacentesIguales [[1,2],[1,4],[4,4]]
3
>>> numeroParesAdyacentesIguales ["ab","aa"]
2
>>> numeroParesAdyacentesIguales [[0,0,0],[0,0,0],[0,0,0]]
12
>>> numeroParesAdyacentesIguales [[0,0,0],[0,1,0],[0,0,0]]
8
>>> numeroParesAdyacentesIguales [[0,0,0,0],[0,0,0,0],[0,0,0,0::Int]]
17

Synopsis

Documentation

numeroParesAdyacentesIguales :: Eq a => [[a]] -> Int Source #

1ª definición (Por comprensión).

numeroParesAdyacentesIgualesFilas :: Eq a => [[a]] -> Int Source #

(numeroParesAdyacentesIgualesFilas xss) es el número de pares de elementos consecutivos (en la misma fila) iguales de la matriz xss. Por ejemplo,

>>> numeroParesAdyacentesIgualesFilas [[0,0,1,0],[0,1,1,0],[0,1,0,1]]
2
>>> numeroParesAdyacentesIgualesFilas ["0010","0110","0101"]
2

numeroParesAdyacentesIgualesFila :: Eq a => [a] -> Int Source #

(numeroParesAdyacentesIgualesFila xs) es el número de pares de elementos consecutivos de la lista xs. Por ejemplo,

>>> numeroParesAdyacentesIgualesFila "0010"
1
>>> numeroParesAdyacentesIgualesFila "0110"
1
>>> numeroParesAdyacentesIgualesFila "0101"
0

numeroParesAdyacentesIgualesFilas3 :: Eq a => [[a]] -> Int Source #

3ª definición de numeroParesAdyacentesIgualesFilas (sin argumentos).

prop_numeroParesAdyacentesIgualesFilas :: [[Int]] -> Bool Source #

Comprobación de la equivalencia de las definiciones de numeroParesAdyacentesIgualesFilas.

>>> quickCheck prop_numeroParesAdyacentesIgualesFilas
+++ OK, passed 100 tests.

numeroParesAdyacentesIguales2 :: Eq a => [[a]] -> Int Source #

2ª definición de numeroParesAdyacentesIguales (Por composición).

numeroParesAdyacentesIguales3 :: Eq a => [[a]] -> Int Source #

3ª definición de numeroParesAdyacentesIguales (con matrices)

numeroParesAdyacentesIguales4 :: Eq a => [[a]] -> Int Source #

4ª definición de numeroParesAdyacentesIguales (sin argumentos)

newtype Matriz Source #

Tipo de matrices.

Constructors

M [[Int]] 

Instances

matriz :: Gen Matriz Source #

matriz es un generador de matrices. Por ejemplo,

> sample matriz
M [[0,0]]
M [[1,-2,-2],[-2,2,0],[2,-1,-2],[-2,0,-2]]
M [[3,-4,0,0,2],[2,2,0,-2,2],[-1,-4,2,-3,0],[0,4,-1,-2,-3],[-3,-4,0,-4,-2]]
M [[1,3],[2,-3],[0,3],[-3,2]]
M [[-3,-3,-4,2,-6,0],[5,-6,3,-2,2,-8],[-6,8,5,1,0,-7],[7,3,7,-8,-3,-2]]
M [[-9,7,0]]
M [[8,-1,11,8,-13,9],[12,13,12,1,0,-9],[3,-4,7,-1,5,-2]]
M [[-3,16,-9,-14,15,-6],[7,-14,8,-10,7,2]]

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

(listaAmatriz m xs) es la matriz con m columnas cuyos elementos son los de xs. Por ejemplo,

>>> listaAmatriz 3 [2,1,5,4,7,9]
[[2,1,5],[4,7,9]]
>>> listaAmatriz 2 [2,1,5,4,7,9]
[[2,1],[5,4],[7,9]]

prop_numeroParesAdyacentesIguales :: Matriz -> Bool Source #

(prop_numeroParesAdyacentesIguales (M xss)) se verifica si las definiciones de numeroParesAdyacentesIguales son equivalentes sobre xss. Por ejemplo,

>>> :{
 all prop_numeroParesAdyacentesIguales
     [M [[0,1],[0,2]],
      M [[0,0],[1,2]],
      M [[0,1],[0,0]],
      M [[1,2],[1,4],[4,4]],
      M [[0,0,0],[0,0,0],[0,0,0]],
      M [[0,0,0],[0,1,0],[0,0,0]],
      M [[0,0,0,0],[0,0,0,0],[0,0,0,0]]]
:}
True

verifica_numeroParesAdyacentesIguales :: IO () Source #

Comprueba la equivalencia de todas las definiciones de numeroParesAdyacentesIguales.

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