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

10X10网格随机游走(A-Z)代码异常:仅显示起始'A'

10×10网格随机游走填充A-Z仅显示起始'A'的问题排查与解决

这种情况几乎可以确定是移动合法性的条件判断存在隐性逻辑错误,导致每次尝试移动都被判定为非法,无法推进到后续字母的填充。以下是最常见的几个坑和对应的排查、修复方法:

常见问题点与修复

  • 边界判断区间错误
    10×10网格的索引范围是0-9,如果你的条件写成new_x >=0 and new_x <=10或者new_x >0 and new_x <10,都会导致边界位置被误判为越界。正确的边界判断应该是:

    0 <= new_x < 10 and 0 <= new_y < 10
    
  • 占用状态判断逻辑颠倒
    若你写的是grid[new_x][new_y] != '.'来判断是否可移动,那逻辑完全反了——应该是当目标位置等于.(未被填充)时才允许移动。正确的判断应为:

    grid[new_x][new_y] == '.'
    
  • 方向尝试逻辑缺失循环
    很多人会犯这个错:每次只随机选一个方向,若该方向不合法就直接跳过当前字母的填充,而不是重新尝试其他方向。正确的做法是循环尝试直到找到合法方向,或者先筛选出所有合法方向再随机选择,示例如下:

    import random
    
    # 初始化网格
    grid = [['.' for _ in range(10)] for _ in range(10)]
    current_x, current_y = 5, 5  # 起始位置可自定义
    grid[current_x][current_y] = 'A'
    directions = [(-1,0), (1,0), (0,-1), (0,1)]  # 上下左右
    
    # 填充B到Z
    for char in range(ord('B'), ord('Z')+1):
        valid_moves = []
        # 先筛选所有合法方向
        for dx, dy in directions:
            nx = current_x + dx
            ny = current_y + dy
            if 0 <= nx <10 and 0 <= ny <10 and grid[nx][ny] == '.':
                valid_moves.append((dx, dy))
        if valid_moves:
            dx, dy = random.choice(valid_moves)
            current_x += dx
            current_y += dy
            grid[current_x][current_y] = chr(char)
        else:
            # 可选:无合法移动时的处理(比如提前终止)
            break
    

排查步骤

  1. 单独打印每次生成的new_x和new_y,验证是否在0-9范围内。
  2. 打印grid[new_x][new_y]的当前值,确认判断逻辑是否和预期一致。
  3. 检查是否在方向不合法时,没有重新尝试其他方向,直接结束了当前字母的填充流程。

内容的提问来源于stack exchange,提问作者Pepe Cuesta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:35:06