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

Trivial Pursuit游戏棋盘格子ID分配及相邻关系匹配方案咨询

Trivial Pursuit棋盘格子ID编码优化方案

原有7位方案评估

你目前设计的7位占位式ID可以实现需求,但存在明显缺陷:6个径向占位位每次仅一个有有效值,冗余度高;计算相邻格子时需要遍历判断哪个径向位非零,逻辑冗余运行效率低,仅适合小规模验证使用,不是最优方案。

推荐最优编码方案(三元组结构)

该方案完全匹配「中心+6条径向+外圈环形」的几何结构,ID全局唯一,相邻格子可通过数值运算直接推导,无需预存映射表,开发和运行效率都更高:

  • 编码规则:用三个独立字段组成ID,可存储为长度为3的数组,也可按位拼接为单个整数存储:
    • 字段1(径向编号):取值06,6条径向路径分别对应16,中心格、非径向衔接点的外圈格统一填0
    • 字段2(环层编号):取值-14,中心格填0;径向路径上的格子从内到外依次填14(与常见Trivial Pursuit棋盘结构匹配,最外层为与外圈衔接的位置);所有外圈环形格统一填-1
    • 字段3(外圈位置):取值-142,纯外圈格子按顺时针/逆时针顺序填142(标准棋盘外圈共42格,每条径向对应7个外圈格);中心格、径向路径上的非衔接格统一填-1

如果需要用单个数值作为ID,可对负数做偏移后按位拼接,示例代码:

// 偏移处理把所有值转成正整数,环层+2,外圈位置+2,保证最小值为0
function generateId(r, l, p) {
  return (r << 8) | ((l + 2) << 4) | (p + 2);
}

对应你给出的示例的ID映射:

  • 中心格:(0, 0, -1)
  • 第2条径向路径上的第2环格:(2, 2, -1)
  • 第3条径向路径与外圈衔接的格:(3, 4, 22)
  • 编号21的纯外圈格:(0, -1, 21)

方案优势

  • 无冗余存储:三个字段均有明确业务含义,无无效占位位,内存占用仅为原有7位方案的一半不到
  • 移动逻辑开发极简单:相邻格子无需预存映射表,直接通过ID数值运算即可得到
    • 径向格(r,l,-1)移动:向内走取(r, l-1, -1),l=1时向内走直接到中心格;向外走取(r, l+1, -1),l=4时向外走直接到对应外圈衔接格
    • 外圈格(0,-1,p)移动:顺时针/逆时针走取(0, -1, p±1),边界值做循环处理即可;如果p为某条径向的衔接位置,可向内走进入对应径向
    • 中心格(0,0,-1)移动:向外走可直接生成任意径向的第一层格(r, 1, -1),r取值1~6
  • 扩展性强:如果后续调整径向数量、环层数量、外圈长度,只需要调整对应字段的取值范围即可,不需要重构整个编码逻辑。

内容的提问来源于stack exchange,提问作者Lénaïg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:57:01