人気ブログランキング | 話題のタグを見る

Haskell の多次元配列 range

Haskell の配列を扱う Data.Array モジュールには指定した範囲のインデックスのリストを作る range という関数がある。プログラム言語の説明は文章では分かりにくいことがあるので Hugs で動かしてみる。

Hugs> :load Data.Array
Data.Array> range (2,5)
[2,3,4,5]

多次元のインデックスの場合は、最小のインデックスと最大のインデックスを指定すると、その範囲のインデックスの組み合わせ全部のリストを得ることができる。

Data.Array> range ((1,1),(3,2))
[(1,1),(1,2),(2,1),(2,2),(3,1),(3,2)]

range を使うと、たとえば九九の表から、3*3 から 5*5 までの矩形部分の答えのリストを作るなどの芸当ができる。

Data.Array> map (kuku !) (range ((3,3),(5,5))) where kuku = array ((1,1),(9,9)) [((i,j),i*j)| i <- [1..9], j <- [1..9]]
[9,12,15,12,16,20,15,20,25]
by tnomura9 | 2009-11-02 13:00 | Haskell | Comments(0)
<< ライフゲーム Haskell の多次元配列 >>