《逻辑对决》(Break the Code)是一款规则简洁、上手容易而不失深度的 2–4 人逻辑推理桌游。二人局要猜出对手的五枚牌;三、四人局则要猜出中央未分发的代码。玩家通过询问数字、颜色、位置与相邻关系,逐步排除不可能的排列。

截至 2023 年 2 月,我在 BGA 上累计玩了近 500 场,Elo 大约 350,曾处在世界排名前 100。这些数据来自当时的个人记录,缺少可公开复核的历史快照,仅用于说明本文的经验背景。持续游玩后,我把当时形成的推理和攻防思路整理成这篇攻略。

本文不从头复述规则,比较适合已经熟悉游戏、想进一步提高胜率的读者。第一次接触游戏时,可以先看 IELLO 官方英文规则书BGA 游戏帮助

规则依据|本文采用的牌序与 BGA 规则

游戏共有 20 枚实体牌。代码按数字从小到大排列;同一数字同时出现黑、白两色时,黑色在左、白色在右。BGA 版本中,玩家只能在自己的回合猜测;二人局猜错后继续游戏,三人及以上猜错则出局。有人猜对后,同一轮剩余玩家仍会完成各自的回合,因此可能出现并列胜者。本文的算例都按这套规则计算。

本文以取胜为目标,从数字推理、问题选择和终局攻防三个层面展开。文中的“更好”“更差”均表示作者基于上述对局经验作出的判断,适用范围由具体候选集和轮次决定。

术语与推理对象

  • 密码牌(Cipher tile):20 枚黑、白和绿色实体组件。后文在描述组件时简称“数字牌”。
  • 代码(Code):按规则排序的一组未知密码牌。二人局目标是对手代码;三、四人局目标是中央代码。
  • 私人代码:玩家屏风后的密码牌。本文用它表示一名玩家持有的完整代码。
  • 候选代码:满足当前全部规则约束的一种代码;所有候选代码组成候选集
  • 回答分支:同一问题的某个可能回答所对应的候选子集。
  • 实体发牌:把两枚外观相同的绿色 5 仍视为两个组件的发牌结果;概率计算按实体发牌计权。
  • 算例记号:代码字面量用 WBG 表示白、黑、绿,例如 W0 表示白色 0。

一、数字推理:决胜的基础

数字推理是抢先猜出代码的基本功。如果已有信息足以确定答案,却没能在自己的回合完成推理,就等于额外给了对手一轮机会。

1.1 推理流程

最基本的流程是从自己的私人代码和场上回答出发,不断把已知信息转化为新的限制条件。值得重点关注的通常包括:

  • 某些位置的数字和;
  • 某一位置的数字或颜色;
  • 颜色数量与颜色数字和;
  • 相邻同色、相邻连续、对子等结构;
  • 自己的私人代码造成的排除关系。

常用方法包括合并信息、排除、设未知数和有限穷举。信息较多时,先把约束写成候选集,可以减少记忆负担。

例 1.1:三人局

  • 自己的私人代码:黑0、黑4、绿5、白8、黑9;
  • 对手 1 的回答:连续数字为 (a,b)(c,d);白色总和为 7;数字总和为 15;没有 6;黑色总和为 8;
  • 对手 2 的回答:最大最小差值为 7;白色总和为 18;黑色数量为 2;没有 6;a=b=2

先合并回答之间的关系:对手 1 的数字总和 15 已经可以由白色总和 7 与黑色总和 8 推出,真正继续收缩候选的是连续边模式与“没有 6”;对手 2 的 a=b=2 固定了开头的一对 2,最大最小差值为 7 又把末牌锁定为 9。再叠加颜色总和、黑色数量与自己拿走的实体牌进行枚举,对手 1 的代码唯一为:

W0、B1、W3、W4、B7

对手 2 有两种可能:

  • B2、W2、B3、W7、W9
  • B2、W2、W7、B8、W9

两名对手的候选还不能各自独立选择,因为同一枚实体牌不能同时出现在两份私人代码中。把它们联立后只剩两套合法的完整发牌;再从 20 枚实体牌中扣除自己与两名对手的牌,中央代码因此是二选一:

  • W1、B3、G5、B6、W6
  • W1、G5、B6、W6、B8

这里需要特别注意牌序:代码必须按数字升序书写,同值时黑色在白色左边。记录候选时也应始终遵守这条规则,否则同一组牌可能被误读为不同的代码。

1.2 极值回答与边界代码

当回答落在取值范围的极端位置时,先假设“最极端的合法私人代码是什么”,常常能快速缩小候选集。

例 1.2:二人局

  • 自己的私人代码:绿5、白6、白7、黑8、白9;
  • 对手数字总和:35。

在排除自己的私人代码以后,对手可取得的极大数字组合受到很强限制。完整枚举只有一个合法代码:

G5、B6、B7、W8、B9

例 1.3:二人局

  • 自己的私人代码同上;
  • 对手数字总和:34。

这时只有两种合法代码:

  • B4、B6、B7、W8、B9
  • W4、B6、B7、W8、B9

我还会优先检查一些极端回答,例如左侧两三枚牌之和很小、右侧两三枚牌之和很大、颜色数字和偏向取值边界,以及最大最小差值接近极限。这些适合用来寻找突破口,但不保证在每个候选集里都有效。

1.3 穷举:筛选合法候选

很多看似不同的推理技巧,底层都是在排除不符合约束的候选。手算的价值,是用结构和经验跳过大部分不可能情况;当候选已经很少时,老老实实穷举反而最可靠。

例 1.4:三人局

  • 自己的私人代码:黑0、白0、黑1、白2、黑4;
  • 对手 1:不存在相邻同色;连续数字为 (b,c,d);右三张总和为 20;左三张总和为 14;
  • 对手 2:连续数字为 (c,d);白色总和为 20;左三张总和为 17;数字对数为 1。

先把对手 1 的数字写成:

(a,b,b+1,b+2,e)

由左三张和右三张的条件可得:

\[a+b+(b+1)=14\] \[(b+1)+(b+2)+e=20\]

两式相减可得 $e=a+4$。再结合排序,有 $a\leq b$ 且 $b+2\leq a+4$,所以只需检查 $b=a,a+1,a+2$:

  • $b=a$ 时,$3a=13$,没有整数解;
  • $b=a+1$ 时,a,b 也会连续,与已知连续段不符;
  • $b=a+2$ 时,解得 $a=3$。

因此对手 1 的数字为 3、5、6、7、7。继续结合颜色条件和对手 2 的回答,完整枚举得到唯一的可见牌局:

  • 对手 1:B3、G5、W6、B7、W7
  • 对手 2:W3、B6、W8、B9、W9
  • 中央代码:W1、B2、W4、G5、B8

这类例子适合先用代数找骨架,再用剩余牌与颜色约束收尾;不必强迫自己把所有步骤都压在一次心算里。

1.4 对手行为中的额外信息

除了公开回答,对手的选择和猜测也可能提供信息,但这类信息依赖行为假设,可靠性低于规则直接给出的约束。

对问题选择,我当时常用的观察是:

  • 游戏前期多数人倾向选择一般信息量较高的问题,因此参考价值有限;
  • 当候选问题看起来差不多时,对手选择哪一个,可能反映他的私人代码和当前推理缺口;
  • 对手主动选择表面上较弱的问题,有时是在回避暴露自己,但也可能只是判断不同或没有算清楚。

对猜测行为,则需要区分规则事实与对手是否理性:

  • 二人局猜错不会出局;实体规则要求猜测者完整报出五枚牌。BGA 界面向对手展示的信息量未经实测,本文不作量化;
  • 对手猜对说明他的私有信息足以支持某个答案。在假设他经过推理后作答时,才能把“猜对”反推成额外约束;
  • 对手没有猜,也可能是候选仍多,也可能只是没算完,通常不宜赋予太强含义。

例 1.5:二人局

  • 自己的私人代码:黑0、黑1、黑3、白3、黑7;
  • 对手回答:白色总和为 20;中三张总和为 12;右三张总和为 19;左三张总和为 5;
  • 对手已知的自己信息:相邻同色为 (a,b,c);黑色总和为 11;数字总和为 14;
  • 对手在前置位猜对。

仅根据公开回答,对手私人代码仍有两个候选:

  • W0、W1、W4、W7、W8
  • W1、B2、W2、W8、W9

再加入“对手将自己的候选缩小到唯一解后才猜”这一行为假设。第一种私人代码无法唯一确定我的代码,第二种可以,因此可进一步锁定:

W1、B2、W2、W8、W9

该结论依赖“规则信息 + 对手行为模型”。对手越少做概率猜测,这条行为信息通常越可信。

二、问题的选择与攻防

我的实战感觉是:问题选择合理、基础推理顺畅时,常见对局大约需要 3–5 个问题才能确定代码。三个高价值回答有时足够,回答较弱时则可能需要五个以上;极端回答也可能像例 1.2 那样直接把候选压到一个。

这个范围来自我的对局观察,规则不会保证具体问题数。

2.1 问题的一般价值

2.1.1 颜色信息与数字信息

我习惯先把问题粗分成颜色问题和数字问题。除“黑色数字总和”“白色数字总和”同时携带颜色与数值信息外,很多问题主要只推进其中一侧。

如果连续选择数字总和、左三张总和、右三张总和,数字可能已经清楚,颜色却仍然模糊;反过来,只问相邻同色、白色数量、黑色数量,也可能知道颜色结构却无法确定数字。

我的经验是,数字通常需要更多约束,颜色有时可以借助自己的私人代码和剩余牌恢复。因此在三四个问题里,我往往只安排一个直接的颜色问题,但具体比例要看私人代码和候选集。

在颜色相关问题中:

  • 颜色数量只告诉你“有几枚”,通常难以直接确定位置;
  • 相邻同色能提供局部结构,命中时很实用;
  • 黑色或白色数字总和既约束颜色,也约束数字,是我当时最优先观察的问题之一。

数字类问题则更依赖组合:

  • 全部数字总和覆盖五枚牌,通常比单独三张和提供更全面的整体约束;
  • 已知全部数字总和后,中三张和与最大最小差值之间会形成较强联系;
  • 相邻连续的价值波动很大,有时直接锁定结构,有时几乎没有帮助;
  • 数字位置适合配合其它约束使用,命中后还会附带左右大小关系;
  • 奇偶数量、数字对数,以及“中间牌为 5 以上还是 4 以下”通常划分较粗,但在特定候选集里仍可能恰好命中要害。

2.1.2 把问题看成候选集划分

把剩余候选看成一个集合,提出问题就等于按不同回答把集合切成若干组。问题好不好,不能只看“能切成几组”:如果一组很大、其它组都很小,大多数时候仍会落入大组。

一个更实用的指标是期望剩余候选数。若各回答组大小为 $n_1,n_2,\ldots,n_k$,当前共有 $N$ 个等权候选,那么:

\[\mathbb{E}[N_{\text{remain}}]=\frac{\sum_i n_i^2}{N}\]

也可以用信息熵衡量回答分布。两者都比单纯数回答类别更可靠,但仍只是单步指标;它们没有自动包含颜色恢复、后续问题、猜测顺序和向对手泄露的信息。

为了给这种判断一个统一参照,我枚举了完整牌组中的所有五牌组合。20 枚实体牌可以组成 15,504 个五牌组合;把两枚外观相同的绿色 5 视作同一种牌面后,对应 12,444 种可见代码。暂不加入自己的私人代码和历史回答时,全部数字和有 38 类回答,左、中、右三张和分别有 23、24、23 类,黑色和白色数字和各有 35 类;相邻连续与相邻同色最多各有 16 种边模式;最大最小差值有 8 类;颜色或奇偶数量各有 6 类;固定数字的位置依数字不同有 3–10 类。类别多不等于实战一定更好,因为各组大小并不均匀。

从这个角度看,常见问题可以粗略理解为:

  • 全部数字和、黑色数字和、白色数字和:回答范围宽,通常能把候选切得较细;
  • 左、中、右三张和:完整牌组基线有 23–24 类回答,但在具体候选集里会显著收缩;
  • 相邻类问题:五张牌有四条邻接边,因此最多有 $2^4=16$ 种模式;完整牌组基线中 16 种模式都能出现,不过各区域大小并不均匀;
  • 数字位置:回答类别依数字而变,0 和 9 最少,2–7 最多;“没有这个数字”的区域通常很大;
  • 最大最小差值:取值为 2–9,共 8 类;
  • 颜色与奇偶数量:取值为 0–5,共 6 类;
  • 数字对数:取值为 0–2,共 3 类;
  • “中间牌为 5 以上还是 4 以下”:只有 2 类,是非常粗的二分。

2.1.3 截至 2023 年的个人经验评级

下面这张表保留我在约 500 局后形成的选题直觉。自己的私人代码、已有回答、颜色恢复能力和攻防关系都会改变问题价值,因此这张表只提供初始检查顺序。

个人评级 对应问题
T0 白色数字总和、黑色数字总和
T0.5 相邻同色
T1 全部数字总和
T2 左三张总和、中三张总和、右三张总和、相邻连续、最大最小差值
T3 数字位置、白色数量、黑色数量
T4 奇数数量、偶数数量、数字对数、中间牌为 5 以上还是 4 以下

在完整牌组的枚举结果中,全部数字和的回答熵约为 4.56 比特(bit,信息熵的单位),黑色或白色数字和约为 4.50 比特。这个结果支持“总和类问题通常切分较细”。表中的实战顺序还受当前候选集影响;进入残局后,应直接比较各问题对当前候选集的划分。

2.2 问题的选择

问题价值取决于它对当前胜负期望的改善。 全局信息量只能作为候选集尚未充分收缩时的初始参照。

在完全理性的简化模型里,可以把一次决策的胜、平、负概率写成 $p_{\mathrm{win}}$、$p_{\mathrm{tie}}$、$p_{\mathrm{loss}}$,三者之和为 1。靠近终局时,候选集更小,枚举每个回答以后能否猜出答案,往往比套用全局评级更可行。

概率计算按实体发牌计权。两枚绿色 5 的牌面相同,仍属于两个实体组件;两枚都有可能留在未知区域时,同一个可见代码可能对应多种实体发牌,因而具有更高权重。

例 2.1:二人局

  • 自己的私人代码:绿5、黑8、白8、黑9、白9;
  • 对手信息:数字总和为 10;白色数字总和为 5。

因为自己已经拿走一枚绿色 5,剩余实体牌中只剩另一枚绿色 5;下面每种可见代码都只对应一种实体发牌。满足条件的对手代码共有 10 种,并且在实体发牌先验下恰好等权:

  1. B0、B1、W1、B4、W4
  2. B0、B1、W2、W3、B4
  3. B0、B2、W2、B3、W3
  4. B0、W0、W1、W4、G5
  5. B0、W0、W2、W3、G5
  6. B0、W1、B2、B3、W4
  7. W0、B1、W1、B4、W4
  8. W0、B1、W2、W3、B4
  9. W0、B2、W2、B3、W3
  10. W0、W1、B2、B3、W4

比较三个问题:

  • 偶数数量:10 个候选的回答都是 3,没有切分候选集,期望仍剩 10 种;
  • 黑色数量:回答组大小为 2、4、4,期望剩余候选数为 $(2^2+4^2+4^2)/10=3.6$;
  • 数字 1 的位置:回答组大小为 1、2、3、4,期望剩余候选数为 $(1^2+2^2+3^2+4^2)/10=3.0$。

所以在这个具体局面里,问数字 1 的位置优于问黑色数量,而问偶数数量完全没有贡献。期望剩余 3 种只是所有回答分支的加权平均,并不意味着任意一种回答都足以把代码唯一确定下来。

2.3 问题的攻防

选题还要计算自己与对手的相对收益。

一个极端例子是:某张颜色数字和问题对自己很诱人,但如果把“全部数字和”留给对手,对手可能立刻识别出自己接近 7、8、8、9、9 的私人代码。这时主动拿走数字和问题,可能比追求自己的单步信息量更重要。

实际对局很难把每个问题完整量化。我当时通常会向后推演两三步:自己希望得到什么、对手最需要什么、当前问题会暴露多少,然后再决定进攻还是防守。

四人局尤其需要比较相对收益。按照 BGA 规则,提问者也要回答自己的问题;所有人听到同一组公开回答,但每个人拥有不同的私人代码和候选集,因此获得的边际信息不同。应优先选择对自己和目标对手净收益更有利的问题。例如自己没有 5 时询问 5 的位置,可能减少自己的暴露,最终价值仍取决于其它玩家的候选集。

三、全局攻防

前面分别讨论了推理与选题。接近终局时,两者会直接耦合:一个问题既可能让自己确定答案,也可能替对手补上最后一块信息。

3.1 终局选择

3.1.1 终局提问要看轮次

在三、四人局终局,如果提出问题 A 后自己和后位对手都会确定答案,而问题 B 后双方都仍不确定,那么 A 未必更好。

先行动时,问题 A 可能把“有机会平局”的局面变成被后手跟上;后行动时,问题 A 也可能把本来能独享的胜机送给同轮的其它玩家。由于 BGA 在有人猜对后仍让本轮剩余玩家完成回合,提问时必须把座次和同轮结算放进判断里。

3.1.2 猜测还是继续提问

二人局猜错不会出局,因此面对二选一时,立刻猜测至少带来当前回合命中的机会。但这不保证最终胜率一定高于提问:

  • 错误猜测可能向对手暴露重要信息;
  • 如果对手离答案还很远,而某个问题既能缩小自己的候选、又不会明显帮助对手,继续提问可能更稳;
  • 如果对手下一回合大概率能够确定答案,当前回合的概率猜测才更有紧迫性。

实体规则要求猜测者报出完整的颜色和数字排列;BGA 对错误猜测的具体界面展示,本文不作没有实测支持的推断。

三、四人局猜错会立即出局,因此后位玩家常常更倾向于提问。继续提问仍可能帮助已经接近答案的玩家完成代码。

3.2 先后手策略

我的个人感受是,后手经常更舒服。相同的问题数量下,后手还能观察先手是否选择猜测、是否猜对,并据此调整风险偏好。这项优势来自行为信息,具体收益随对局变化。

后手还有一个略邪恶的玩法:通过行动节奏让先手误以为自己已经掌握很多信息,从而给他提前概率猜测的压力。

先手最直接的主动权,是从开局起优先拿走更适合自己、或更不愿留给对手的问题。先手需要更主动地比较双方信息进度,并在判断后手即将完成推理时决定是否提前承担猜测风险。

四、心理战术的边界

对手选择什么问题、何时猜测、行动节奏如何,都可能泄露他掌握的信息。前文例 1.5、终局选择和先后手策略采用同一流程:先根据规则建立候选集,再用行为判断调整候选优先级或猜测时机。

这类线索依赖对对手水平、习惯和动机的假设,证据强度低于牌面事实。候选之间差异明显时,应优先相信可验证的约束;只有多个候选都能解释公开信息时,心理判断才适合充当次级依据。对手也可能故意制造误导,因此行为线索只用于决定“先检查哪一个”或“何时承担风险”,合法答案仍由公开约束筛选。

把全文压缩成一句话:先维护准确的候选集,再选择能改善胜负局面的问题,最后把轮次和对手行为作为修正项。规则与枚举限定合法候选,个人经验只在候选中调整顺序。

规则与延伸阅读

若要核对牌序、猜测与多人局结算,可以从以下公开资料开始: