You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中兼容DFS的无坐标二维矩阵邻域实现问询

二维矩阵搜索的无坐标邻域函数需求

近期我在处理大量二维矩阵搜索问题,一直采用基于坐标的DFS框架,代码如下:

data State = S { word :: String, coord :: Coord } deriving (Eq, Ord, Read, Show)
data Coord = C Int Int deriving (Eq, Ord, Read, Show)

dfsOnN :: Ord r => (a -> r) -> (a -> [a]) -> [a] -> [a]
coordMap :: [[a]] -> Map Coord a
cardinals :: Coord -> [Coord]
neighbors :: Map Coord Char -> State -> [State]

solution :: [[Char]] -> String -> Bool
solution board w = any found . search . states w $ board
  where
    search = dfsOnN coord (neighbors vals)
    found  = (== "") . word
    vals   = coordMap board

当前方案存在明显冗余:需要将矩阵转换为坐标映射,通过坐标运算获取邻域,还得处理Maybe类型的查找逻辑。我现在需要一个简洁、高效(O(log n))、全函数式的无坐标邻域函数,类型为a -> [a],要求能兼容上述DFS函数,同时满足以下约束:

  • 含类型签名的总token数不超过100;
  • 仅使用base、containers等Haskell常用标准库;
  • 禁止使用!!、head等部分函数;
  • 时间复杂度严格控制在O(log n)。

我猜测2D zipper结构可以实现这个方案,另外需要说明:此前相关问题的解决方案均与当前DFS函数不兼容。

内容的提问来源于stack exchange,提问作者Brendan Langfield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:53:13