Ejercicios de matrices (planteado en haskell)

propuesto por GregoGC

1.- Función booleana para reconocer si una matriz lo es 2.- Función suma de filas de matrices 3.- Función suma de matrices 4.- Función resta de matrices

Enunciado
Sea el siguiente tipo para representar matrices de números reales:

type Fila = [Double]

data Matriz M Int Int [Fila] deriving Eq

de modo que el primer entero indica el número de filas de la matriz, el segundo indica el número de columnas y por último están las componentes, como una lista de filas, donde cada fila es una lista de reales. Por ejemplo:

m1 :: Matriz
m1 = M 2 3 [ [ 1/3, -1/2, 1/5 ]
, [ 1/8, 3/7, 1/4 ]
]
representa una matriz 2x3.

1.- Define una función esMatriz :: Matriz -> Bool que devuelva True si la lista de filas tiene tantas filas como indica el primer entero y cada una de las filas tiene tantos elementos como indica el segundo. Por ejemplo:

esMatriz m1 -> True
esMatriz (M 2 3 [[1,2,3],[4,5]]) -> False

Consejo: se pueden usar las funciones predefinidas length y all.

2.- Define una función sumaF :: Fila -> Fila -> que dadas dos filas (con el mismo número de elementos) devuelva la fila que se obtiene al sumar uno a uno los componentes de cada una. Por ejemplo:

sumaF [1,2,3] [4,5,6] -> [5.0,7.0,9.0]

3.- Usando sumaF, define una función sumaM para sumar dos matrices:

sumaM m1 m1 ->
| 0.67 -1.00 0.40 |
| 0.25 0.86 0.50 |

sumaM m1 (M 2 2 [[1,2],[3,4]]) -> * * * Exception: matrices no sumables

4.- Define una función restaM que calcule la diferencia de dos matrices. Por ejemplo:

restaM m1 m1 ->
| 0.00 0.00 0.00 |
| 0.00 0.00 0.00 |

Ver todo el enunciado

Preguntas sobre el desafío

¿Tienes dudas sobre el desafío? plantéala aquí

Plantea tu pregunta

0 Soluciones

Aún nadie ha dado solución a este desafío, se el primero y acepta el desafío.

Dar mi solución