德克萨斯州列在清单列表中

时间:2017-02-19 13:14:41

标签: haskell matrix

这是针对学校项目的。

我必须生成一个带范围的列表列表。

示例:

myLol x y z = 
[[   x  , x-2 , ... ,  x-y+2 ],
 [  x-2 , x-4 , ... ,  x - y ],
 [  ... , ... , ... ,   ...  ],
 [x-z+2 , x-z , ... , x-y-z+4]]

我的第一个想法是制作四个列表,并在最后将它们放在一起,但这并没有给我第三行。 我一直试图在列表理解中进行列表理解,但这并没有带来任何好处。

我非常确定生成第1列,第2列和第4列,然后这些值中的行可以正常工作。我虽然没有足够的技巧来弄清楚它的代码。

有什么想法吗?

编辑: 我让它只能使用4x4矩阵。虽然不能动态运作。

myLol x y z = [(row1 x y),(row2 x y),(row3 x y z),(row4 x y z)]

row1 x y =  take x [x,(x-1) .. (x-y+1)] 
row2 x y =  take x [(x-1),(x-2) .. (x-y)]
row4 x y z = take x [(x-z+1),(x-z) .. (x-y-z+2)] 

row3 x y z = [((row1 x y) !! 2),((row2 x y) !! 2) .. ((row4 x y z) !! 2)]

1 个答案:

答案 0 :(得分:1)

看起来你正试图做这样的事情:

myLol x y z = [ [ x-i-j | i <- [0,2 .. y-2] ] | j <- [0,2 .. z-2]]