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

Python开发无遗传算法俄罗斯方块AI的网格空隙计数问题

空隙计数代码修复方案

问题根因

原代码仅统计了紧贴方块正下方的空白单元格,没有统计同一列中第一个方块下方的所有连续空白单元格,因此出现计数偏小的问题。

修复思路

按列遍历网格:

  • 对每一列,从上到下查找第一个被占据(非0)的单元格位置
  • 找到后,统计该位置下方所有空白(值为0)的单元格数量,全部计入空隙数
  • 若整列无被占据的单元格,不计入空隙

修复后代码

def grid_gaps(grid):
    gaps = 0
    col_count = len(grid[0])
    row_count = len(grid)
    # 按列遍历
    for x in range(col_count):
        # 先找当前列第一个非0的行位置
        first_block_y = None
        for y in range(row_count):
            if grid[y][x] != 0:
                first_block_y = y
                break
        # 该列有方块的话,统计第一个方块下方的所有0
        if first_block_y is not None:
            for y in range(first_block_y + 1, row_count):
                if grid[y][x] == 0:
                    gaps += 1
    return gaps

效果验证

  1. 针对第一个测试网格:
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 0, 0],
[0, 0, 0, 1, 0]

运行后返回空隙数3,符合预期。
2. 针对第二个测试网格:

[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[1, 1, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 1, 0]

运行后返回空隙数6,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:09:02