谜题 / 五子棋 · 连成五子背后的平衡难题 / 黑棋禁手:三三 / 四四 / 长连 待审核 3 / 4
forbidden · 黑棋禁手

黑棋禁手:三三 / 四四 / 长连

连珠 (renju) 规则只约束黑棋:既然自由五子棋先手必胜,就给执黑的先手方设几条禁手——走出其中任何一种,当即判负。白棋不受任何限制——包括长连:白方连成六子及以上同样判白胜(实测本仓库实现),「恰好五子」只是黑棋的约束。禁手有三类:同时形成两个活三的三三、同时形成两个四的四四,以及连成六子或更长的长连。下面逐类摆出标准局面看清判定边界,再到末尾的沙盒里自由落黑子,实时标出全部禁手点。

1 · 三类禁手与一个特例

每个局面里,黑棋已落下若干子,标记点是正在考虑的下一手——看它为什么犯禁(或为什么不犯)。判定结果由本系列共享的 inspect() 实时算出。

图 1-1 · 四个标准局面的判定边界。标记点是正在考虑的下一手,可切换局面看它为何犯禁或不犯禁。

成五优先于禁手。如果同一手棋既连成恰好五子,又同时触发了某条禁手(例如另一个方向凑成了四四),则判黑胜——成五的判定优先于犯规。这是连珠规则里一个容易忽略的边界:禁手只在「没赢」时才追究。

2 · 自由探索:实时标出所有禁手点

棋盘会实时把当前局面下黑棋的禁手点标出来—— = 走此成三三、 = 走此成四四、 = 走此成长连。试着摆出一个被禁手「困住」的局面:几个方向都想发力,却步步犯规。这正是连珠削弱先手的方式。

警示 · 本页判定覆盖三三、四四、长连三类标准禁手,对递归嵌套的情形做了一层近似:RIF 规则里「某个三只能经由禁手点变成活四,因而不算三」这类要反推禁手点的「假三 / 假四」,本实现不递归展开,故极少数边角局面的判定会与严格 RIF 有出入。标准局面(本页四个预设)逐一核对无误。

图 2-1 · 自由落黑子的探索沙盒,实时标出当前局面下黑棋的禁手点:三为三三、四为四四、长为长连。

想看禁手在真实对局里怎么生效,去可玩棋盘把规则切到 连珠禁手,勾上「标出黑禁手点」边下边看;想弄清为什么只罚黑、Swap2 又是另一条路,回规则全景