编辑/陈致平

过年期间最重要的就是和家人、亲戚聚在一起,享受年节的气氛,更重要的是在吃完大鱼大肉后在牌桌上大杀四方,一股气势不战到三更半夜不罢休。其实打麻将除了有趣之外,从理牌到胡排开始,就需要使用一连串的技巧。

今年特别整理了过年麻将胡牌功略,让各位可以在麻将桌上战无不胜。国立台湾师范大学数学系副教授郭君逸教大家用数学破解麻将,从基本的组合开始观察胡牌牌型,不用靠著背牌照样赢光一堆老手。

▲一眼就知道胡牌了没,用数学冷知识专业打麻将。(图/取自UniMath)

▲一眼就知道胡牌了没,用数学冷知识专业打麻将。(图/取自UniMath/《呖咕呖咕新年财》电影剧照)

文/郭君逸

一个人会不会打麻将有一项基本的判断方法,「能够判断是否胡牌」。在实战中,判断的速度越快越好,如此才能在取舍牌的时候,很快的知道打哪张牌听的牌比较好,也不会因为停下来比画思考被看穿手里拥有的牌型。

要知道听什么牌,最快的方式是背起来。常打麻将的人,脑中自然背了不少牌型,常见牌型瞬间就能判断,除非拿了许多同花色的牌才会造成困扰。

电脑程式如何判断听牌?

要判断听牌,得先知道胡牌的牌型,如同要准备晚餐的食材之前,得先知道晚餐想吃什么。

一般都是删除「一刻 (3 张相同牌) 」或「一顺 (3 张连续牌)」,也就是所谓的「搭子」,再利用〈递回〉程序处理。这样做的效率并不太优,虽然判断一副牌还是瞬间完成,但若要判断十万副牌局,效率好坏造成的影响非常之大。

▲一眼就知道胡牌了没,用数学冷知识专业打麻将。(图/取自UniMath)

2017年,威廉斯堡大学数学系的李志光教授等人发表了一项麻将研究,论文中提出了一套高效率的判断胡牌演算法,以下版本由国立台湾师范大学数学系郭君逸副教授修改呈现。

定理1:一副牌 P,若把一个对子 (俗称眼睛) 拿掉后,假设此时数字最小的牌是 x,

●若 x 的张数是 3 张以上,则拿掉 3 张 x (一刻)后,剩下牌为 Q。

●否则拿掉 x, x+1, x+2 (一顺)之后,剩下的牌为Q。(若无法拿,则 P 没胡)

则「P 胡」若且唯若「 Q 胡」。

举个例子说明:

例1:判断 P = 33345678 是否胡牌?

P 中唯一能当眼睛的地方,就是 3,因此把 33 一对眼睛拿掉,变成 Q = 345678,Q 是胡牌型,所以 P 也是。

例2:判断 P = 55666777889 是否胡牌?

其中 55, 66, 77, 88 都可以当眼睛,每种情况都试一次。

●若 55 当眼,剩下 666777889;最小的 6 有三张,直接拿掉666,剩 777889,再拿 777,得 889,所以没胡。

●若 66 当眼,剩下 556777889;最小的是两张 5,但没有办法拿掉两个 567 了,所以没胡。

● 若 77 当眼,剩下 556667889;最小的是两张 5,但没有办法拿掉两个 567 了,所以没胡。

各种能拿掉眼睛的方式都试过,都无法胡,所以 P 不是胡牌型。

这样做的好处,只要拿掉一副牌的眼睛后,就可以一路由最小的牌取到最大的牌,依序检验,「线性时间」即可判断是否胡牌,避免来来去去的反复尝试,省下非常多的计算时间。

已经学会胡牌型之后,判断听牌就简单了。

只要试著加入任何一张牌,再尝试拿掉各种可能的眼睛,利用 定理1 判断是否可以胡牌即可得知听哪些牌,仅需要 O(n3 ) 的时间。

例3:判断 3456667888 听什么牌?

● 加入1,剩 13 开头,没胡

● 加入2,

      o 拿掉 66,剩 234567888,胡!!!

      o 拿掉 88,剩 234566678,没胡

● 加入3,

      o 拿掉 33,剩 456667888,没胡

      o 拿掉 66 或 88,剩 334 开头,没胡

● 加入4,

      o 拿掉 44,剩 35 开头,没胡

      o 拿掉 66 或 88,剩 3445 开头,没胡

● 加入5,略,胡

● 加入6,略,胡

● 加入7,略,胡

● 加入8,略,胡

● 加入9,略,胡

上述方法虽然是电脑的判断方式,但其实人脑判断,也是相同道理,先把可能的眼睛拿出来,然后最小牌能拿走一刻即拿走一刻,否则试著拿走一顺,由于人脑很强大,会自动省略一些无关紧要的判断步骤,因此执行速度并不会太慢。


奴役电脑帮你办事

有了快速判断听牌、胡牌的方法后,就可以开开心心奴役电脑帮我们做一些血汗计算了。

李志希的电脑帮忙跑了所有的情况,发现十三张麻将除了〈国士无双,俗称十三么〉可以听十三张牌之外
听九个洞的情况只有一种 1112345678999,俗称〈九连宝灯〉。
听八个洞的情况有 16 种;
听七个洞的情况有 79 种。

由郭君逸计算了台湾麻将十六张的情况:
听九个洞的情况有 11 种,有 1122233345678999、1112345667788999、1112345666777888、1112345566778999、1112344556678999,或是上述平移、对称的牌型。
听八洞的情况有 94 种;
听七个洞的则有 532 种。

眼睛的判断

李教授的方法告诉我们判断胡牌与否,先找出眼睛会比较快。一旦眼睛的选择多,事情就变得越复杂,电脑当然没问题,但人脑判断可能稍微慢了一点。此时,数学可以派上用场。

方法是这样的,先只看同个花色,把所有的牌分成3堆:(一四七)堆,(二五八)堆,(三六九)堆,接著观察每堆的张数。

▲一眼就知道胡牌了没,用数学冷知识专业打麻将。(图/取自UniMath)

例如上面的牌型,其中三六九牌共 7 张,二五八牌共 6 张,一四七牌共 4 张。
这样一眼就知道没有胡牌!
这样一眼就知道没有胡牌!
这样一眼就知道没有胡牌!
完全不用去试。

什么!!!为什么可以这么快?因为我有独门秘技!

独门秘技
若要胡牌的话,要抓成三个三个一组的搭子再搭配一对眼睛,
搭子若是「顺」,贡献这三堆的个数必同时都加 1;
搭子若是「刻」,则某一堆会加 3。

因此,若先不看眼睛,这三堆的牌数除以 3 的余数应该要相等。再加上眼睛,就只会让某一堆个数与其他两堆不同。

以上例来说,三堆的张数分别为 7, 6, 4 张,除以 3 的余数为 1, 0, 1,于是,眼睛只有可能出现在第二堆,也就是二五八。若 55 拿掉,前半的 33344 无法凑成两搭,因此没胡;若 88 拿掉,依 定理1,333 也可以拿掉,剩下的局部44556 也无法凑成两搭,所以也无法胡牌。

我们再将这个结果写成定理 (没办法,数学家就是喜欢这样XD)

定理2:一副牌,依一四七、二五八、三六九分成三堆,每堆的张数除以三的余数必有一个与另两个不同,则眼睛就在不同的那堆里。

回到古天乐手上拿的牌型来说:23333444455556666 是否胡牌呢?

因为一四七有 4 张,二五八有 5 张,三六九有 8 张,除以 3 分别余 1, 2, 2,所以眼睛只可能是 44,接著把 44 拿掉,剩下 233334455556666,然后利用 定理1 依序去拿,得到 234, 333, 456, 555, 666 ,所以是胡牌型。


有了 定理2,判断胡牌时眼睛的可能性,可缩减到一堆,检验至多三次,大幅提升计算效率。

当整副牌同时有万、筒、条、字的时候,因为眼睛只会在其中一种花色,因此其它花色一定都是 3 的倍数,利用张数就可以推判眼睛在哪个花色,所以只要能判断其中一种花色即可。

假想一个更困难的例子,每张牌可以超过 4 张的话,

● 请问:33333444555566777888899999 有没有胡牌?

三六九,共 12 张,除以 3 余 0;

一四七,共 6 张,除以 3 余 0;

二五八,共 8 张,除以 3 余 2,

所以若能胡牌的话,眼睛必是 55 或 88:

假设是55,利用 定理1,由小到大拿成333, 345, 345后剩 466777888899999,而 4 的后面断了,所以没有胡。

假设是88,利用 定理1,由小到大拿成333, 345, 345, 456, 567, 789, 789, 999,胡牌。

文章来源:UniMath

●本文经授权使用,请勿任意转载!

●作者简介:

郭君逸 - 国立台湾师范大学数学系副教授、魔术方块收藏家,主要研究兴趣为组合、图论、演算法。近年来致力于科普的推广,喜爱玩各种数学游戏、益智玩具以及各类型魔术方块。目前为世界魔方联盟(WCA)台湾地区认证员。曾开设整个学期的魔术方块通识课程,跑遍全台进行魔术方块系列演讲。

●UniMath是一个 Online 数学媒体,发表数学相关的科普文章及影音,使数学用更柔软的姿态走入群众,提升数学素养。

相关文章