2017-02-19 4 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]] 

は、私が最初に考えたのは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]] 
関連する問題