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

求二维列表索引越界检查的简易方案(DFS迷宫生成场景)

索引越界检查简易方案

针对每个方向的邻居,先判断索引是否在二维列表的有效范围内,再判断是否未访问(值为0):

  • 左邻居:检查 x-1 >= 0,确保列索引不小于0
  • 右邻居:检查 x+1 < len(map[0]),确保列索引不超过迷宫的列数(假设每行长度一致)
  • 上邻居:检查 y+1 < len(map),确保行索引不超过迷宫的行数
  • 下邻居:检查 y-1 >= 0,确保行索引不小于0

修改后的函数代码:

def checkNeighbors(map, x, y):
    left = (-1, 0)
    right = (1, 0)
    up = (0, 1)
    down = (0, -1)

    clearDirs = []
    rows = len(map)
    cols = len(map[0]) if rows > 0 else 0  # 处理空迷宫的边界情况

    # 检查左邻居
    if x - 1 >= 0 and map[y][x-1] == 0:
        clearDirs.append(left)
    # 检查右邻居
    if x + 1 < cols and map[y][x+1] == 0:
        clearDirs.append(right)
    # 检查上邻居
    if y + 1 < rows and map[y+1][x] == 0:
        clearDirs.append(up)
    # 检查下邻居
    if y - 1 >= 0 and map[y-1][x] == 0:
        clearDirs.append(down)

    return clearDirs

说明:

  • 先获取迷宫总行数rows和总列数cols,避免重复计算
  • 每个方向先做索引范围检查,再判断是否未访问,从根源避免索引越界
  • 额外处理了空迷宫的情况,防止len(map[0])触发报错

内容的提问来源于stack exchange,提问作者Wyatt M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:03:12