2016-04-19 85 views
0

我想編寫一個函數來生成一個包含n乘n格的座標的元組列表。在Haskell中生成網格座標的元組

例如:

> 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)| x < - [0..n-1],y < - [0..n-1]]'爲行主要,或'[(y,x)...]'爲列主要。 – Mephy

+0

也看到[這個問題](http://stackoverflow.com/questions/8029046/),它會生成確切的期望輸出(儘管這是一個不同的問題)。 – Mephy

+0

'grid d n = sequence $ replicate d [0..n]'將產生一個尺寸爲'n'的'd'維網格。這可以被部分地評估以獲得2維網格'2dGrid =網格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)]