一般手の向聴数
向聴数の公式
向聴数とは聴牌までに必要な有効牌の数であると定義されます。麻雀C言語プログラム集を参考にすると、向聴数の公式は、
\[8 – 2 \times 面子 – 面子候補 – 雀頭\]
と表現できます。ここで、面子の数を \( a \)、面子候補 (搭子、対子)の数を \( b \)、雀頭の有無を \( c \) とすると、向聴数 \( f(a,b,c)\) は、
\[ f(a, b, c) = 8 – 2a – b – c \]
と表現できます。ただし、\( 0 \leq a + b \leq 4 \wedge 0 \leq c \leq 1 \) です。
しかし、
を公式に当てはめると、\( f(4, 0, 0) = 0\) となり、聴牌となりますが、は雀頭の候補とならないので、\( 1 \) 向聴とする方が良いのかもしれません。これは、\( 5 \) 枚目を待ちとして認めるかという問題なので、定義によっては聴牌としても良いのかもしれません。余談ですが、聴牌ではこの手牌では聴牌宣言を行うことはできす、牌理ツールを使うと \( 1 \) 向聴となります。
したがって、雀頭候補が存在しないときを考慮して、制約を \( 0 \leq a + b \leq 4 \wedge -1 \leq c \leq 1 \) とします。よって、上記の手牌の向聴数は \( f(4, 0, -1) = 1\)となります。また、向聴数の値の範囲は、
\[ -1 \leq f(a, b, c) \leq 8\]
とします。 また、\( f(a, b, c) = -1 \) のときは和了形であることを示します。
雀頭について
上記の向聴数の公式について、\( f(0, 0, -1) = 9 \) となりますが、このような牌の分解の仕方は不適当であるとします。\( c = -1 \) を取るときの向聴数は、\( f(4, 0, -1) \) または \( f(3, 1, -1) \) が最適な分解であることが保証されます。雀頭候補が存在しないという条件は、手牌に \( 4 \) 枚同じ牌があるときに発生します。
手牌に同じ \( 4 \) 枚の牌が \( 1 \) 組あるとき
このとき、\( c = -1 \) という分解の仕方は不適当です。これは、同じ牌 \( 4 \) 枚の牌を手牌から除いたとき、残りは \( 10 \) 枚となります。このとき、\( 10 \) 枚から面子が \( 3 \) 組できるとすると、残った \( 1 \) 枚の牌が雀頭候補となります。このとき、\( f(4, 0, 0) = 0 \) となり聴牌であることが分かります。また、\( 2 \) 面子、\( 1 \) 面子候補では、\( 10 – 3 \times 2 – 2 = 2 \) 枚の牌が雀頭候補となります。このとき、\( f(3, 1, 0) = 1 \) となります。
手牌に同じ \( 4 \) 枚の牌が \( 2 \) 組あるとき
上記の手牌のように、\( 4 \) 面子存在するときに \( c = -1 \) となります。このとき、\( f(4, 0, -1) \) となります。
手牌に同じ \( 4 \) 枚の牌が \( 3 \) 組あるとき
ここで、次の手牌を考えます。
いわゆる \( 4 \) ブロックしかないので、\( 3 \) 面子と \( 1 \) 面子候補または、\( 3 \) 面子と雀頭候補が存在するという分解の仕方があるので、\( f(3, 1, -1), f(3, 0, 0) \) となります。
同じ \( 4 \) 枚の牌について
上記の議論に関連して、同じ \( 4 \) 枚の牌について考えます。同じ \( 4 \) 枚の牌を槓子として扱わない場合、暗刻または雀頭と面子候補に分けるとします。
暗刻に分解するとき
このとき、暗刻が字牌であれば残りの \( 1 \) 枚の牌は雀頭候補にならないので、孤立牌となります。数牌であれば手牌によって面子候補となる可能性があります。
雀頭と面子候補に分けるとき
このとき、見かけ上は面子候補となりますが、面子となることはないので、このような分解の仕方は正しくありません。
まとめ
向聴数の公式
ここで、面子の数を \( a \)、面子候補 (搭子、対子)の数を \( b \)、雀頭を \( c \) とすると、向聴数 \( f(a,b,c)\) は、
\[ f(a, b, c) = 8 – 2a – b – c \]
と表現できます。ただし、\( 0 \leq a + b \leq 4 \wedge -1 \leq c \leq 1 \) であり、
\[ -1 \leq f(a, b, c) \leq 8\]
を満たします。\( c = 1 \) のときは雀頭が存在し、\( c = 0 \) のときは雀頭候補が存在し、\( c = -1 \) のときは雀頭候補が存在しないことを表します。
コメント