Matriz

Matriz

Médio

Instruções

Dada uma string que representa uma matriz de números, retorne as linhas e as colunas dessa matriz.

Então, dada uma string com quebras de linha embutidas 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

seu código deve ser capaz de produzir:

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

As linhas da nossa matriz de exemplo:

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

E as colunas dela:

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

Dicas

Para completar este exercício, você precisa criar o tipo de dados Matrix, com instâncias de Eq e Show, e implementar as seguintes funções:

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

Você vai encontrar uma declaração de dados fictícia e as assinaturas de tipo já prontas, mas cabe a você definir as funções e criar um tipo de dados significativo, um newtype ou um sinônimo de tipo.

Nenhuma validação da entrada é necessária. Deixe falhar se a matriz não for retangular, se caracteres inválidos aparecerem etc.

shape é (rows, cols)

Editar via GitHub O link abre em uma nova janela ou aba
Haskell Exercism

Tudo pronto para começar Matriz?

Crie sua conta no Exercism para aprender e dominar Haskell com 107 exercícios e mentoria humana de verdade, tudo de graça.