「24 点」是一副牌就能玩的速算游戏:每次翻开四张牌,用加、减、乘、除和括号,把四个数字各用一次,算出 24。它看起来靠灵光一现,其实有稳定的路数。下面先讲规则,再用四个由易到难的例子拆解,然后给出三个最常用的套路,最后说明计算机怎样穷举,以及本游戏为什么不会发出无解的牌。
一、规则:四张牌,各用一次
- 牌面:A 算 1,2 到 10 按点数,J 算 11,Q 算 12,K 算 13。本游戏使用完整的 A–K 牌组。
- 每次发四张牌。四张牌的点数可以相同,但同一张牌不能重复使用。
- 四个数字每个必须且只能用一次,顺序可以任意调整。
- 只允许加号、减号、乘号、除号和括号;不允许把两个数字拼成一个数,也不允许开方、阶乘、乘方。
- 中间结果可以是负数或分数,只要求最后一步等于 24。例如 8÷(3−8÷3) 的中间结果就是分数。
- 除数不能为 0,除以 0 的算式无效。
举个例子:牌面 3、3、8、8 里有两个 3,但它们是两张不同的牌,算式中必须各出现一次;不能写成 33,也不能只用一个 3。
二、四个例子,由易到难
例 1:2、3、4、6
先看能不能凑出 1:3−2=1。另一边 6×4 正好是 24,再乘 1 不改变结果。
6×4×(3−2)=24
验证:3−2=1;6×4=24;24×1=24。
例 2:4、4、10、10
两个 10 相乘得到 100,减去一个 4 得 96,再除以另一个 4。
(10×10−4)÷4=24
验证:10×10=100;100−4=96;96÷4=24。
例 3:1、5、5、5
直接想 5×?=24 不行,因为 24÷5=4.8。把 1 变成 1/5,括号里就得到 4.8。
5×(5−1÷5)=24
验证:1÷5=1/5;5−1/5=24/5;5×24/5=24。
例 4:3、3、8、8
这组没有 1、2、4、6,硬乘凑不出来,需要主动造一个分数:8÷3=8/3,3−8/3=1/3,而 8÷1/3=24。
8÷(3−8÷3)=24
验证:8÷3=8/3;3−8/3=1/3;8÷1/3=24。
这个例子说明:分数不是障碍,而是 24 点最有力的工具之一。
三、三个套路
套路一:凑 3×8 或 4×6
24 的整数因数对只有 1×24、2×12、3×8、4×6。牌面里出现 3 就找 8,出现 4 就找 6,出现 2 就找 12。例 1 的骨架就是 6×4,另外两张牌只需要凑出 1。看到四张牌先问:能不能把其中两张留作因数,另外两张做成 1?
套路二:利用 1 和分数
如果凑不出整数因数,就制造 1 或倒数。例 3 用 1÷5 把 1 变成 0.2,让括号里得到 4.8;而 4.8 正好是 24÷5。另一个典型是 1、3、4、6:1−3÷4=1/4,6÷1/4=24,写成完整算式就是 6÷(1−3÷4)=24。看到 6 和 4,不要只想 6×4,也可以想 6÷(1/4)。
套路三:先凑 12 再乘 2
24 也等于 12×2。把四张牌分成两组,一组凑 12,一组凑 2。例:1、3、5、7,7+5=12,3−1=2,于是 (7+5)×(3−1)=24。再如 4、7、8、9,8+4=12,9−7=2,得到 (8+4)×(9−7)=24。分组比从左往右硬算更容易看出结构。
四、穷举:计算机怎样保证有解
程序的做法很朴素:每次从当前数字里挑两个,试加、减、乘、除四种运算(减法和除法要试两个方向),把结果放回去,数字就少一个;重复到只剩一个数,看它是不是 24。四个数只有有限的挑法和运算顺序,全部试完就能确定有没有解。
关键是全程用分数:8÷3 如果记成 0.3333,最后会差一点点;用分子和分母精确计算,才不会把有解误判成无解。
四个数能形成的组合其实很少,一次完整搜索通常不到一毫秒。难的不是算得快,而是判断得准:只要中途用过小数,就可能把「其实有解」算成「差一点」。本游戏发牌时先跑一遍这个穷举,只发有解的组合;提示功能也从同一条搜索路径里取第一步,所以提示之后剩下的牌一定还算得出来。
五、常见问题
可以重复使用某一张牌吗?
不可以。四张牌必须各用一次;即使两个点数相同,也要当作两张牌分别用掉。
中间结果可以是负数或分数吗?
可以。规则只约束最后结果等于 24,中间过程允许出现负数和分数。
能把 3 和 3 写成 33 吗?
不能。只能使用四则运算和括号,不能拼接数字,也不能开方、阶乘或乘方。
发到的牌一定算得出来吗?
是。每次发牌前程序都会验证有解;如果暂时想不到,可以点「提示」看一步,或点「换一题」。
一定要按从左到右的顺序算吗?
不需要。乘除先于加减,括号可以改变顺序;你可以在任意位置加括号,只要最后一步等于 24 就行。
为什么提示只给一步?
一步提示是从一条完整解法里取出的第一个运算,执行后剩下的数字仍然有解。它给你方向,但不会直接把答案说完。
先认骨架,再试分数,最后才逐项穷举。顺序对了,24 点就从碰运气变成一门可以练的手艺。