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

如何通过0-8数字输入设置Tic-Tac-Toe(井字棋)棋盘位置?

井字棋棋盘位置映射的优化实现

你需要的是将0-8的线性位置转换为3x3数组的行列索引,完全不需要硬编码判断,用整数除法和取余就能高效解决:

核心实现代码

def set(f, pos, type):
    row = pos // 3  # 计算行索引:0-2对应第0行,3-5对应第1行,6-8对应第2行
    col = pos % 3   # 计算列索引:每个行内的位置0-2对应列0-2
    f[row, col] = type
    return f

完整可运行代码

import numpy as np

class main():
    FIELD = np.zeros((3,3), dtype=int)

    @staticmethod  # 原代码的set方法无self参数,需添加静态方法装饰器避免调用报错
    def set(f, pos, type):
        row = pos // 3
        col = pos % 3
        f[row, col] = type
        return f

main.set(main.FIELD, 2, 1)
print(main.FIELD)

运行后输出与预期一致:

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

原有代码的问题说明

你之前的实现不仅效率低下,还存在逻辑错误:

  • pos == (0 or 1 or 2) 等价于 pos == 0,因为0 or 1 or 2的布尔运算结果是0,只有pos=0时会匹配第一个分支,像1、2这类同属第0行的位置会被错误分配到其他行。
  • 硬编码区间判断完全没必要,通过简单的数学计算就能直接完成位置映射,代码更简洁且不易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:42:58