[心得] 天凤牌谱解析#5 杠牌与吃牌

楼主: Ticcy0807 (卡拉斯)   2024-03-04 13:42:12
哈囉大家好,这里是踢西乌
上回我们提了有关拔北与碰牌的m属性
这回我们将继续研究杠牌与吃牌的部分
http://tenhou.net/0/?log=2021052315gm-00b9-0000-8eed03eb&tw=2
https://tenhou.net/0/log/?2021052315gm-00b9-0000-8eed03eb
先举暗杠的例子
同一份谱中,南三局二本场晚巡,出现了这个标签
<N who="1" m="30720" />
老样子,起手式先转成二进制
30720 = 0111 1000 0000 0000
在大明杠与暗杠的编码中
Bit 0, 1一起表示杠牌的来源
01表示下家、10表示对家、11表示上家
那00?鸣自己的话当然就是暗杠囉
Bit 2~7固定留空设为0
Bit 8~15则表示鸣牌的那张牌的编号
0111 1000 = 120,120÷4 = 30,30÷9 = 3···3
所以我们可以得知,通知哥在此时暗杠了北(?!)
你问我为什么他要暗杠北,看看牌谱就知道了嘛xD
对日麻有点概念的朋友都知道,暗杠了要马上翻宝牌
所以后面跟着一个宣告新宝牌的标签
<DORA hai="82" />
至于这张指示牌是什么牌,就留给读者去解析囉
大明杠的部分,因为这份谱里面没有,所以举了另一份谱
http://tenhou.net/0/?log=2021053118gm-00b9-0000-b61d0d70&tw=2
https://tenhou.net/0/log/?2021053118gm-00b9-0000-b61d0d70
南三局中巡,出现了这样一串标签
<E115/>
<N who="2" m="29443" />
<V85/>
<DORA hai="53" />
将29443转为二进制得到
29443 = 0111 0011 0000 0011,直接进行分析
Bit 0, 1 = 11,从上家鸣牌
Bit 2~7留空,所以是大明杠
Bit 8~15 = 0111 0011 = 115,115÷4 = 28···3,28÷9 = 3···1
可以得知,这表示从上家大明杠南风
因为明杠的宝牌会在舍牌之后才翻出
所以先出现了舍牌标签后,才对新宝牌进行宣告
最后的加杠,这边参照下面这份谱
http://tenhou.net/0/?log=2023081612gm-00b9-0000-6299c2b2&tw=2
https://tenhou.net/0/log/?2023081612gm-00b9-0000-6299c2b2
南三局六巡目,亲家碰了上家的发,出现鸣牌标签
<N who="2" m="49707" />
很快的解析一下
49707 = 1100 0010 0010 1011
Bit 0, 1 = 11,来源为上家
Bit 3 = 1,表示为碰牌
Bit 5, 6 = 01,没有使用到的牌是编号第二张
Bit 9~15 = 110 0001 = 97
97÷3 = 32···1,32÷9 = 3···5
碰的牌是碰的面子里编号第二小的牌,碰的牌是发
十三巡目,亲家拔北后(m = "31520")摸发,加杠
<N who="2" m="49715" />
加杠比较特殊的一点是,我们还是要说明原先碰的牌的来源
在天凤牌谱的设计里,加杠仅对原先碰牌的m属性的两个Bit进行修改
我们一样先将49715转成二进制,并与原先的49707比对
49715 = 1100 0010 0011 0011
49707 = 1100 0010 0010 1011
可以发现,加杠产生的m值,仅在原来的m上,对Bit 3, 4进行反相
(了解一点程式逻辑的也可以理解成 m = m XOR 0x0018)
如此便可以描述加杠的情形了
与明杠相同,加杠翻宝牌的时间点,也是在打牌之后
故也在舍牌标签之后,才出现宣告新指示牌的标签
最后是吃牌,想当然尔三麻没有吃牌,这边举一份四麻谱作为例子
https://tenhou.net/0/?log=2022080822gm-0061-0000-f23fe26f
https://tenhou.net/0/log/?2022080822gm-0061-0000-f23fe26f
东三局八巡目,北家吃了一张牌
<N who="1" m="46383" />
起手式,先转成二进制
46383 = 1011 0101 0010 1111
在吃牌的编码中
Bit 0, 1同样表示来源,不过因为只能吃上家,所以固定为11
Bit 2 = 1表示,这是吃牌的鸣牌标签
因为吃牌有三张,要标记这三张牌依据是第几张,所以
Bit 3, 4标示使用的最小数牌是第几张
Bit 5, 6标示使用的中间数牌是第几张
Bit 7, 8标示使用的最大数牌是第几张
Bit 9固定留空为0
Bit 10~15,这里不像碰牌,要标记来源牌是刻子内编号第几张
吃牌只需要标记,吃的是顺子内最小、中间、或是最大的数牌
而顺子一个花色有7种,一共3个花色
所以可能组合自然是7×3=21种
我们可以看,吃牌是21种可能组合里面的哪一种
并且是吃哪张牌,来进行标记
这样说可能还是有点抽象,这边来对46383这个数字进行分析
Bit 0, 1 = 11,上家打出
Bit 2 = 1,标记这是个吃牌的鸣牌标签
Bit 3, 4 = 01,最小的数牌是第二张
Bit 5, 6 = 01,中间的数牌是第二张
Bit 7, 8 = 10,最大的数牌是第三张
Bit 9 = 0,固定留空
Bit 10~15 = 10 1101 = 45
45÷3 = 15,15÷7 = 2···1
可以知道,这边的副露是三四索吃二索
以上就是杠牌与吃牌的m属性标签分析,下一回预计是最终回
会将和了与流局、终局的标签进行分析
我们下次再见囉~
Reference:
https://m77.hatenablog.com/entry/2017/05/21/214529
http://jyanryu.blog.fc2.com/blog-entry-18.html
https://c.tieba.baidu.com/p/4452478082
https://mahjong.nekoeigo.net/mjlog/
本文更新于于Wordpress及ptt MJ_JP:
https://tcjpmjlab.wordpress.com/2023/09/02/tenhou_mjlog_5/
https://www.ptt.cc/bbs/MJ_JP/M.1709530944.A.98A.html
Facebook粉专:
https://www.facebook.com/TCJPMJLab

Links booklink

Contact Us: admin [ a t ] ucptt.com