今回のお題は麻雀の和了点を求めるプログラムの予定だったのだが、予定を変更して手牌の文字列表現について。
麻雀の牌姿を示すときに、牌画を使うのも面倒なので文字で表す場合がある、例えば以下の牌姿の場合、
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
- 一二三④⑤⑥789東東白白
とするような表現方法。
電脳麻将 では以下の4種類の方法で手牌の文字列表現を定義している。
単独の牌
は 'm1'、
は 'p2'、
は 's3'、
は 'z1'、
は 'z5' といった具合。
は 'p0' とした。
さらに加えて、自摸切りの場合は次に '_' をつけ、立直宣言牌の場合はさらに末尾に '*' を付加する。四萬自摸切り立直の場合は、'm4_*' となる。
手牌(兵牌)
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
の場合、'm123p456s789z1155m0'。最後の1牌が自摸牌を表す。
面子
![]()
![]()
は 'm23-4'、![]()
![]()
は 'p550='、![]()
![]()
![]()
は 'z6666'。
'-' は上家からの鳴き、'+' は下家からの鳴き、'=' は対面からの鳴きを表す記号。
![]()
![]()
に加槓した場合は 's999+9' とする。
*1:副露順に注意