Matriz

Matriz

Media

Instrucciones

Dado un string que representa una matriz de números, devuelve las filas y las columnas de esa matriz.

Así, dado un string con saltos de línea incrustados como:

9 8 7
5 3 2
6 6 7

que representa esta matriz:

    1  2  3
  |---------
1 | 9  8  7
2 | 5  3  2
3 | 6  6  7

tu código debería ser capaz de producir:

  • Una lista de las filas, leyendo cada fila de izquierda a derecha mientras se avanza de arriba abajo por las filas,
  • Una lista de las columnas, leyendo cada columna de arriba abajo mientras se avanza de izquierda a derecha.

Las filas de nuestra matriz de ejemplo:

  • 9, 8, 7
  • 5, 3, 2
  • 6, 6, 7

Y sus columnas:

  • 9, 5, 6
  • 8, 3, 6
  • 7, 2, 7

Pistas

Para completar este ejercicio, tienes que crear el tipo de dato Matrix, con las instancias Eq y Show, e implementar las siguientes funciones:

  • cols
  • column
  • flatten
  • fromList
  • fromString
  • reshape
  • row
  • rows
  • shape
  • transpose

Encontrarás una declaración de datos ficticia y las firmas de tipo ya puestas, pero depende de ti definir las funciones y crear un tipo de dato, un newtype o un sinónimo de tipo con sentido.

No es necesario validar la entrada. Deja que falle si la matriz no es rectangular, si se encuentran caracteres no válidos, etc.

shape es (rows, cols)

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Haskell Exercism

¿Listo para empezar Matriz?

Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.