在Haskell中生成网格坐标元组
我想编写一个函数,生成包含n×n网格坐标的元组列表 例如:在Haskell中生成网格坐标元组,haskell,grid-layout,Haskell,Grid Layout,我想编写一个函数,生成包含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] 我想有一个相当简单的方法可以做到这一点,也许是我对角线函数的一个变体,但我还是一片空白 该函数执行以下操
> 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]
我想有一个相当简单的方法可以做到这一点,也许是我对角线函数的一个变体,但我还是一片空白 该函数执行以下操作:
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)]
该函数执行以下操作:
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)]
[(x,y)| x还可以查看哪个生成了准确的所需输出(尽管这是一个不同的问题)。grid d n=sequence$replicate d[0..n]
将生成一个大小为n
的d
维度网格。可以对其进行部分计算,以得到一个二维网格2dGrid=grid 2
。这几乎是的一个副本,它提供了一系列备选解决方案。我最喜欢的是(,)[0..x][0..x]
[(x,y)| x还可以查看哪个生成准确的所需输出(尽管这是一个不同的问题)。grid d n=sequence$replicate d[0..n]
将生成一个大小为n
的d
维度网格。可以对其进行部分计算,以得到一个二维网格2dGrid=grid 2
。这几乎是的一个副本,它提供了一系列备选解决方案。我最喜欢的是(,)[0..x][0..x]