sorteerOpY :: (Int, Int) -> [[(Int, Int)]]
sorteerOpY (x,y) = [[(a,b)]|b<-[0..y-1],a<-[0..x-1]]
これは私が今持っているものであり、sorteerOpY (2,3)
結果は次のとおりです。
[[(0,0)],[(1,0)],[(0,1)],[(1,1)],[(0,2)],[(1,2)]]
しかし、これは私がそれをもたらすことを望んでいるものです:
[[(0,0),(1,0)],[(0,1),(1,1)],[(0,2),(1,2)]]
リストが正しく作成されるようにするには、何を変更する必要がありますか?
リスト内包表記は次の[[(a, b) | b <- [0..y-1]]| a<-[0..x-1]]
ように考えることができます。
for every b <- [0..y-1]
xs <- for every a <- [0..x-1]
add (a, b) to the resulting list
add xs to the resulting list
したがって、a
in(a, b)
がより速く変更される必要がある場合は、これらの行を交換する必要があります。
for every a <- [0..x-1]
xs <- for every b <- [0..y-1]
add (a, b) to the resulting list
add xs to the resulting list
これは直接結果になり[[(a,b) | a <- [0..x-1]]| b <- [0..y-1]]
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加