2 月的时候,群友看 VTB 直播雀魂,发现主播为了防止互动的时候窥屏看到手牌,PS 了一张看起来像手牌的图来挡住真实的手牌。
群友受此启发,纷纷讨论自己也要这么玩,PS 各种役种的牌扮老虎,比如大家都喜欢的国士无双:
大家云集响应,因为之前正好写过生成器,趁此机会我就说群友要啥我就帮群友 PS,都可以做。后来群友觉得正经的役没意思,想搞点不一样的,说要搞个圆周率。这就有意思了。话题很自然的转到了那能不能胡牌的问题上,因为只有数字,先默认牌型是清一色,一试,发现小数点后最开始的 14 位数字就真的能凑成一副胡牌:
3.
14159265358979
-> 234 678 555 999 11
我立刻兴致来了,马上就想看看位数再往后,还能有哪里能凑成胡牌,这就开始写脚本。
圆周率位数的迭代之前写飞花令的时候用过,Ctrl+V 过来,然后是判断是否和牌的算法。简单来说按照一般和牌的标准型n*AAA+m*ABC+DD=14
,通过先取雀头DD
,然后交换先取刻子AAA
后顺子ABC
或者先顺子后刻子的逻辑迭代完整副手牌,看残张是否为零就能确认这副手牌是否和牌。
写完代码,测试了几次,又另外加入了七对子牌型的判断,然后以一万位为目标执行了一遍。不出意料还真的有很多位置的数列能够凑成和牌。感觉这还是值得做个视频记录一下。
视频里只迭代了小数点后一万位的数字。在测试脚本的时候,其实试验过迭代到二十万位,已经相当耗时了,不过也因此遇到了一些比较值得一说的牌型:
比如遇到的第一个平和
是在第 209 位小数,数列是7 5 6 6 5 9 3 3 4 4 6 1 2 8
,牌型是66 123 345 456 789
,还是一个一气贯通
断幺九
在第 222 位小数,数列是8 4 7 5 6 4 8 2 3 3 7 8 6 7
,牌型是66 777 888 234 345
四暗刻
在第 5391 位小数,数列是8 8 2 8 1 6 1 3 3 2 3 1 6 6
,牌型是22 111 333 666 888
二杯口
在第 15912 位小数,数列是8 5 7 4 5 6 9 8 1 4 7 1 9 6
,牌型是11 456 456 789 789
,这也是第一个七对子牌型(但规则只计算二杯口),下一个七对子牌型在 16834 位,但同样也是二杯口,再下一个则是 21513 的一色双龙会,国标役种。真正的七对子要到 35441 位才能遇到,6 4 6 4 5 5 1 2 7 8 1 2 7 8
,牌型11 22 44 55 66 77 88
一色双龙会
在第 21513 位小数,数列是5 7 2 3 9 7 3 9 5 1 2 8 8 1
,牌型是123 123 55 789 789
九莲宝灯
在第 32452 位小数,数列是9 2 1 9 5 1 9 6 7 5 1 4 8 3
,牌型是111 234 55 678 999
,还是个最漂亮的九莲宝灯。
四暗刻绿一色
在第 162552 位小数,数列是4 2 4 3 3 3 4 8 8 2 2 6 6 6
,牌型是222 333 444 666 88
,显然这还是个纯绿一色。
最后回顾下一切的开端: