2017-02-19 73 views
0

这是一个学校项目。德克萨斯州名单列表

我必须生成范围列表的列表。

例子:

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)] 
+0

''myLol XYZ =取(z'quot'2)[换乘(y'quot'2)ξ, ξ-2 ..] | ξ< - [x,x-2 ..]]''? – leftaroundabout

+1

嵌套列表解析应该可以正常工作。尝试类似'[[x + y | x < - [1..10]] | y < - [1..10]]' – chi

回答

1

它看起来像你正在尝试做这样的事情:

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