2016-04-19 20 views
0

n×nグリッドの座標を含むタプルのリストを生成する関数を記述します。例えばハスケルでグリッド座標のタプルを生成する

> genGrid 2 
[(0,0),(0,1),(1,0),(1,1)] 
> genGrid 3 
[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)] 

私は次の操作を行って、対角線を生成することができます知っている:

genDiagonal n = zip [0..] [0..n-1] 

私は、これを行うにはかなり単純な方法があるのか​​もしれないバリアントを考えています私の対角関数ですが、空白になります。

+1

'[(X、Y)| row-majorの場合はx < - [0..n-1]、y < - [0..n-1]] '、column-majorの場合は' [(y、x)...]です。 – Mephy

+0

正確な出力を生成する[この質問](http://stackoverflow.com/questions/8029046/)も参照してください(別の質問ですが)。 – Mephy

+0

'grid d n = sequence $ replicate d [0..n]'は、サイズ 'n'の' d'次元グリッドを生成します。これは、2次元グリッド「2dGrid = grid 2」を得るために部分的に評価することができる。 –

答えて

5

range関数は、この行います

Data.Ix> range ((0, 0), (2, 3)) 
[(0,0),(0,1),(0,2),(0,3),(1,0),(1,1),(1,2),(1,3),(2,0),(2,1),(2,2),(2,3)] 
関連する問題