Matriz

Matriz

Médio

Instruções

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:

  • Uma lista das linhas, lendo cada linha da esquerda para a direita enquanto percorres as linhas de cima para baixo,
  • Uma lista das colunas, lendo cada coluna de cima para baixo enquanto avanças da esquerda para a direita.

As linhas da nossa matriz de exemplo:

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

E as suas colunas:

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

Dicas

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:

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

Vais 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)

Editar via GitHub A ligação abre numa nova janela ou separador
Haskell Exercism

Estás pronto para começar Matriz?

Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.