玩法与规则
2 人各自设定一个由 0~9 中的 4 个数字排成的数。同一个数字不能用 2 次。以 0 开头的数(如 0123)也可以使用。设定的数不让对方看到。[1]
从先手开始轮流猜测对方的数,每次给出一个 4 位数。猜测的 4 位数同样不能把同一个数字用 2 次。
给出猜测后,对方回答 A 和 B 的个数。在猜测的 4 个数字中,数字和位置都与对方的数相同的个数是“A”,包含在对方的数中但位置不同的个数是“B”。
例如对方的数是 1234、猜测是 1325 时,1 的位置也对,算 A;3 和 2 位置不对,算 B;5 不在对方的数中,不计。结果为 1A2B。如果已有 3 个 A,而第 4 个数字也包含在对方的数中,那么这个数字只能在剩下的 1 个位置上,因此会成为 A。所以不存在 3A1B 这样的结果。
完全猜中对方的数时,结果为 4A。猜中所用次数少的一方获胜,用相同次数猜中则为平局。因此,即使先手猜中了,后手在同一轮仍有 1 次猜测,如果后手也猜中,则为平局。本页规定,双方各猜 20 次仍未分出胜负时为平局。[2]
在“单人猜数”中,要在 30 次以内猜中电脑设定的数。
本页的操作方法
如何开始对局
玩法用棋盘右侧(屏幕较窄时在棋盘下方)的按钮选择。点击“人机对战”中的初级、中级、高级任一难度,你将作为先手开始。点击“选择后手(中级)”,则由中级电脑担任先手。选择“单人猜数(电脑出题)”时,要猜出电脑设定的数。选择“同屏 2 人对战”时,两人轮流使用同一台设备。
点击“和好友对战(发送链接)”会创建房间并显示链接。请用“复制链接”(支持的设备上也可以用“分享”)发给对方。对方打开链接并点击“加入”后,对方成为后手,对局开始。对方迟迟不来时,可以用“不等了,先和电脑玩”切换为人机对战。对局中对方的连接断开持续 2 分钟时,可以点击“与电脑开始新的一局(当前对局将结束)”。无人连接的状态持续 30 分钟,或创建后已过 24 小时,房间会被删除。
在人机对战、同屏 2 人对战和单人猜数时,点击“再来一局”会以相同玩法从头开始对局。和好友对战时,对局结束后点击“交换先后手,再来一局”开始下一局。无论哪种玩法,都可以用“重新选择玩法”回到玩法选择,用“认输”(单人猜数时为“放弃并查看答案”)结束对局。“悔棋”只能在人机对战和同屏 2 人对战时使用,能退回的只限于设定数字的阶段。给出猜测并得到结果后,就不能再退回到那之前。
输入数字
设定数字和猜测时,逐个输入 4 位数字,然后点击“确定”。输入时可以使用棋盘近侧排列的牌(0~9、删除一位、确定),或棋盘右侧(屏幕较窄时在棋盘下方)的按钮。用棋盘上的牌输入的数字也会显示在按钮上方的栏中。“删除一位”会删除最后输入的数字。设定数字时,点击“随机”会填入一个随机的数。焦点在这些按钮上时,也可以使用键盘的数字键和 Backspace 键。
同屏 2 人对战时,按先手、后手的顺序设定数字。输入的数字会以 ● 隐藏,可以用眼睛形状的按钮切换显示和隐藏。一人设定数字时,另一人请不要看屏幕。数字设定好后,从先手开始轮流输入猜测。
如何看棋盘
棋盘左列是你的猜测,右列是对方的猜测(同屏 2 人对战时,左列是先手,右列是后手)。猜测从远侧起按顺序逐行排列,棋盘上最多显示 8 次猜测。从第 9 次猜测起,会从最旧的行开始消失,因此请在按钮下方的“猜测与结果”表格中查看全部猜测和结果。
每行右侧的牌是结果。牌左侧金色部分的数字是 A 的个数,右侧部分的数字是 B 的个数。以 4A 猜中的行会用金色边框围起来。
每列上方的台座上放着该列要猜的数的牌。对方的数背面朝上,对局结束后翻开。你设定的数正面朝上放在对方那一列上方的台座上(同屏 2 人对战时,双方的数都背面朝上)。单人猜数时只有 1 列,上方的台座上背面朝上放着电脑设定的数。
用棋盘右上角的“斜视角”“俯视角”切换视角。拖动棋盘可以旋转视角。用鼠标滚轮或双指缩放。
取胜技巧
第 1 次猜测时,无论给出哪个数,每种结果下剩下的候选(可能是答案的数)的个数都相同。因此,第 1 次猜测没有有利与不利之分。在全部 5,040 种数中,剩下候选最多的是 0A1B,有 1,440 种;0A0B 时为 360 种。
第 2 次给出与第 1 次数字不重复的数(第 1 次是 0123 时,如 4567),就能根据 2 次的 A 与 B 之和,知道答案的数字在 0~3、4~7、8~9 中各有几个。
A 与 B 之和,就是猜测的数字中包含在答案里的数字个数。知道了包含哪些数字后,再用调换这些数字位置的猜测,确认它们分别在哪一位。
从候选中选择猜测,每次都有可能猜中。例如第 1 次的 0123 结果为 0A0B 时,0~3 不在答案中,因此候选是用 4~9 这 6 个数字组成的 360 种。本页的中级电脑采用从候选中随机选择的方法,平均约 5.5 次猜中。
候选还多的时候,给出不是候选的数,有时能在下一次的结果中把候选分得更细。即使是猜中所需平均次数最少的策略,在第 1 次的 0123 结果为 0A3B 时,第 2 次给出的也是不属于候选的 1435。[2]
对战中对方下一次就可能猜中时,或者作为后手给出最后 1 次猜测时,要从候选中选择。不是候选的数,在那一次不可能猜中。
1A2B 猜数字的起源与历史
1A2B 猜数字(日本称“Hit & Blow”)的规则,与英语中称为 Bulls and Cows(公牛与母牛)、用纸笔玩的猜数游戏相同。Bulls and Cows 也曾被称为 Cows and Bulls、Hit & Blow、Cow & Bull 等。英语中把 A 称为 bull,把 B 称为 cow。通常用 4 位数玩,但也可以用其他位数玩。[1][6]
在早期计算机上玩的版本以 MOO 之名流传开来。在英国剑桥大学,1970 年夏天 MOO 就已经很受欢迎,还制作了列出玩家成绩的排行榜。同年夏天,剑桥大学的 John Larmouth 访问美国麻省理工学院(MIT),与 MIT 的 Jerrold Grochow 一起制作了在 Multics(MIT 使用的一种让许多用户同时使用 1 台计算机的操作系统)上运行的 MOO。Larmouth 离开 MIT 后,Grochow 让所有 Multics 用户都能玩,还制作了排行榜,结果 2 个月内玩过的人超过 75 人,对局约达 1,000 次。[3][6]
在美国贝尔实验室,开发 Unix 的 Ken Thompson 研究了从剑桥大学传来的 MOO 的猜法。据 Dennis Ritchie 回忆,研究结果整理成了一本大笔记本,第一页写着“猜 1234”,然后根据结果中 A 和 B 的个数翻到写有下一次猜测的页面。在日期为 1971 年 11 月的 Unix 最早的使用手册中,moo 也作为“从英格兰引进的猜数游戏”被收录。[4][5]
几次能猜中,已经用计算机研究过。1996 年,田中哲朗穷举了所有情况,在根据结果决定下一次猜测的策略中,求出了猜中所需平均次数最少的策略。其平均为 5.213 次(5,040 种数合计 26,274 次),用这一策略,任何数都能在 7 次以内猜中。同一研究还求出了在确定的策略中,两人对战时最强的策略。该策略的平均为 5.221 次,并非最少,但与平均次数最少的策略对战时,胜率为 50.2%(平局按 0.5 胜计算)。[1][2]
参考资料
- 田中哲朗《数当てゲームMOOの最小質問戦略と最強戦略》(日文,意为“猜数字游戏 MOO 的最少提问策略与最强策略”;第 3 届游戏编程研讨会论文集,1996 年)(在新标签页中打开)
- Tetsuro Tanaka《An optimal MOO strategy》(arXiv,2022 年;1996 年论文的英译)(在新标签页中打开)
- Jerrold M. Grochow《MOO in Multics》(《Software—Practice and Experience》第 2 卷,1972 年)(在新标签页中打开)
- Dennis Ritchie《Ken, Unix and Games》(《ICGA Journal》第 24 卷第 2 期,2001 年)(在新标签页中打开)
- The Unix Heritage Society《V1/man/man6/moo.6》(Unix 第 1 版手册,1971 年)(在新标签页中打开)
- 英文维基百科《Bulls and cows》(2026 年 9 月 28 日访问)(在新标签页中打开)
常见问题
A 和 B 怎么计算?
猜测的数字中,数字和位置都与答案相同的是 A,数字包含在答案中但位置不同的是 B。答案为 1234、猜测为 1325 时,1 是 A,3 和 2 是 B,结果为 1A2B。5 不在答案中,不计。
平均几次能猜中?
在根据结果决定下一次猜测的策略中,平均次数最少的策略平均为 5.213 次,任何数都能在 7 次以内猜中(1996 年田中哲朗的计算)。本页的电脑,高级平均约 5.22 次、中级约 5.5 次、初级约 8.8 次猜中。
可以单人玩吗?
可以。选择“单人猜数(电脑出题)”后,要在 30 次以内猜中电脑设定的数。30 次内没有猜中,会显示答案。中途点击“放弃并查看答案”,答案会显示在棋盘上。
可以使用含有重复数字的数,或以 0 开头的数吗?
不能使用含有重复数字的数,设定数字和猜测时都一样。以 0 开头的数(如 0123)可以使用。可用的数是从 0~9 中选出 4 个不同数字排成的 5,040 种。
和好友对战时,对方能看到我的数吗?
看不到。发送链接和好友对战时,结果由对战服务器计算,发送到对方画面上的只有隐藏了你的数的状态。对局结束后,双方的数会在两边的画面上翻开。同屏 2 人对战时,设定数字期间输入的数字会以 ● 隐藏。人机对战时,电脑也不会看你的数,只根据结果来猜。
可以玩 3 位数或 5 位数吗?
本页只能玩 4 位数。用纸笔玩时,3 位、5 位等其他位数也可以按同样的规则玩。
发送对局统计
本站会把对局的开始与结束、好友对战连接是否成功、3D 显示失败等信息发送到本站服务器,用于调查哪些游戏被玩到最后、哪些设备在显示或连接时失败,以修复故障和改进游戏。如果不想发送,请关闭下方的开关。
会发送的信息
游戏种类、玩法(人机对战、同屏轮流、单人、好友对战)、电脑难度、对局设置(五子棋和西洋跳棋的规则、飞行棋和钻石跳棋的人数)、结果、步数、对局时长区间、好友对战连接是否成功及重新连接次数、3D 显示失败与渲染速度区间、设备类型(是否为手机、内存和核心数区间)、浏览器和 OS 的种类。
不会发送的信息
房间 ID、下的着法与盘面、1A2B 猜数字的数字、IP 地址、GPU 型号。接收方只有本站服务器,不会提供给外部服务。记录在 30 天后删除。
有关记录的处理方式,以及广告和访问分析的外部传输,请参阅隐私政策。