行列

行列

中級

説明

数値からなる行列を表す文字列が与えられたとき、その行列の行と列を返してください。

例えば、次のように改行が埋め込まれた文字列が与えられたとします。

9 8 7
5 3 2
6 6 7

これは、次の行列を表しています。

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

このとき、コードは次の2つを出力できるようにします。

  • 行の配列(行を上から下へとたどりながら、各行を左から右へ読みます)
  • 列の配列(列を左から右へとたどりながら、各列を上から下へ読みます)

例の行列の行は次のとおりです。

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

そして、その列は次のとおりです。

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

ヒント

この演習を完了するには、データ型Matrixを作成し、EqとShowのインスタンスを定義して、次の関数を実装する必要があります。

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

ダミーのデータ宣言と型シグネチャはすでに用意されていますが、関数を定義し、意味のあるデータ型、newtype、または型シノニムを作成するのは自分で行う必要があります。

入力の検証は不要です。行列が長方形でない場合や、無効な文字が含まれる場合などは、そのまま失敗させてかまいません。

shapeは(rows, cols)です。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Haskell Exercism

行列を始める準備はできましたか?

Exercismに登録すれば、107個の演習、そして本物の人間によるメンタリングとともに、Haskellを学んでマスターできます。すべて無料です。