0
好吧,我是Haskell的新手,需要幫助我解決問題的功能方法。Haskell列表中的列表中的目標元素
我有一個列表。更具體地說是[[Char]]
。
我想定位列表中的特定元素,並查看元素上方,下方以及元素左側和右側的元素。
例如:
["-------",
"-------",
"---N---",
"--WOE--",
"---S---",
"-------",
"-------"]
哪裏O
是我靶向元件,和N,S,E,W
直接包圍該元件O
的元素。
我提出,獲得了所述元素O
的(x,y)
座標的函數,並且它是如下:
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索引。一旦我找到了我正在尋找的元素的位置,如何弄清楚它周圍有什麼元素,我就無法爲我的生活找出答案。
對不起,如果這不是最清楚的問題,我可以詳細說明,如果我錯過了什麼。
這正是我所期待的。是的,我可以保證每個列表都有固定的大小,所以這不是問題。謝謝! – Nuuou