好吧,我不知道如何在haskell中做到这一点。例如,我有这样的矩阵
[[1,2],[3,4]]
我想生成一个列表列表,其中包含该矩阵的每个元素的所有可能邻居。
预期结果是:
[[1,2],[1,3],[1,4],[2,1],[2,3],[2,4],[3,1],[3,2],[3,4],[4,1],[4,2],[4,3]]
我知道如何创建函数,该函数将使用每个单元格的邻居线创建列表列表:
pos how = [ (0+dx,0+dy) | dx <- [0..(how-2)], dy <- [0..how-1] ] :: [(Int,Int)]
neighbour (x,y) how = [ (x+dx,y+dy) | dy <- [-1..1], dx <- [-1..1],
x+dx >= 0, y+dy >= 0, x+dx<=how-2, y+dy <= how-1,
(x,y)/=(x+dx,y+dy) ] :: [(Int,Int)]
all_n how = [ p | x <- pos how, let p = neighbour x how ] :: [[(Int,Int)]]
但我无法将其更改为按我描述的那样工作。