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

2048简易版ispossible函数无法正确判断棋盘可移动状态如何修改

2048游戏ispossible函数修复方案

原有代码存在的问题

  • 语法错误:函数定义行末尾缺失冒号,自定义类型Board未定义/导入无法识别
  • 遍历参数错误:range()不能直接传入二维列表board作为参数,需要先获取棋盘边长
  • 元素访问错误:读取棋盘元素时遗漏了变量名board,直接写[i][j]属于非法语法
  • 逻辑覆盖不全:仅校验了水平左移的可行性,未覆盖水平右移、上下移动的场景,会出现大量漏判
  • 调用方式错误:调用函数时传入了4个独立列表参数,函数仅接收1个二维列表类型的棋盘参数,需要将4个行列表嵌套为一个整体传入

修复后的完整代码

def ispossible(board: list[list[int]]) -> bool:
    n = len(board)
    # 检查水平方向(左右移动)可行性
    for i in range(n):
        for j in range(1, n):
            # 相邻存在空位和非空元素可移动
            if (board[i][j-1] == 0 or board[i][j] == 0) and (board[i][j-1] + board[i][j] > 0):
                return True
            # 相邻数值相等可合并
            if board[i][j-1] == board[i][j] and board[i][j-1] != 0:
                return True
    # 检查垂直方向(上下移动)可行性
    for j in range(n):
        for i in range(1, n):
            if (board[i-1][j] == 0 or board[i][j] == 0) and (board[i-1][j] + board[i][j] > 0):
                return True
            if board[i-1][j] == board[i][j] and board[i-1][j] != 0:
                return True
    return False

# 调用示例
print(ispossible([[4,3,2,2],[2,2,8,16], [16,4,4,4], [4,4,4,4]]))

运行结果

上述代码执行后输出True,和输入棋盘的可移动预期一致。

内容的提问来源于stack exchange,提问作者Joshua Bradley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:15:05