好的,我是 Haskell 的新手,需要帮助我了解解决问题的功能方法。
我有一份清单。更具体地说[[Char]]
。
我想以列表中的特定元素为目标,并查看元素的上方、下方和左侧和右侧的元素。
例如:
["-------",
"-------",
"---N---",
"--WOE--",
"---S---",
"-------",
"-------"]
O
我要定位的元素在哪里,以及N,S,E,W
直接围绕元素的元素O
。
我制作了一个获取(x,y)
元素坐标的函数,O
如下所示:
find :: Eq a => [[a]] -> a -> (Int,Int)
find [[]] _ = (-1,-1)
find (x:xs) el = findHelper (x:xs) (0,0,el)
findHelper :: Eq a => [[a]] -> (Int,Int,a) -> (Int,Int)
findHelper [[]] _ = (-1,-1)
findHelper (x:xs) (row,col,el)
| x == [] = findHelper xs (row+1,0,el)
| (head x) == el = (row,col)
| otherwise = findHelper ((tail x) : xs) (row,col + 1,el)
该(x,y)
坐标系是 0 索引的。一旦我找到了我正在寻找的元素的位置,我就无法终生弄清楚,如何弄清楚它周围有哪些元素。
抱歉,如果这不是最清楚的问题,如果我错过了什么,我可以详细说明。