Dada uma string que representa uma matriz de números, devolve as linhas e as colunas dessa matriz.
Assim, dada uma string com quebras de linha incorporadas como esta:
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
o teu código deve conseguir produzir:
As linhas da nossa matriz de exemplo:
E as suas colunas:
Para completares este exercício, precisas de criar o tipo de dados Matrix,
com instâncias de Eq e Show, e de implementar as seguintes funções:
colscolumnflattenfromListfromStringreshaperowrowsshapetransposeVais encontrar uma declaração de dados fictícia e assinaturas de tipo já presentes, mas cabe-te a ti definir as funções e criar um tipo de dados, newtype ou sinónimo de tipo que faça sentido.
Não é preciso validar os valores de entrada. Deixa que falhe se a matriz não for retangular, se forem encontrados carateres inválidos, etc.
shape é (rows, cols)
Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.