まくまく麻雀ノート
更新: / 作成:

リャンメンカンチャンとリャンメンリャンカン

2p3p3p4p5p7p

このような形は、2p3p というリャンメン待ちと、5p7p というカンチャン待ちのどちらでも受けられる、リャンメンカンチャン と呼ばれる形です。 受け入れ牌は 1p4p6p で、枚数としては合計 11 枚もある好形です。 この形にサッと受けらえるようになると玄人な感じがします。

この一歩手前の形としては、次のような形があります。

2s3s3s5s7s

こちらは、2s3s というリャンメン待ちと、3s5s7s というリャンカンが組み合わされた形です。 4s が 2 度受けになってしまっていますが、4s を先に引けば、前述のリャンメンカンチャンに昇格しますし、6s を先に引いた場合でも、リャンメン待ちを残せるので、比較的優秀な形と言えます。 1s を先に引いてしまった場合は微妙 (^^;

以下、いろんなパターンから、上記のような形に持っていけるように練習しておきます。

パターン練習

2p2p3p3p4p5p7p

この形から 2 メンツ作りたいときは、2p を 1 枚外しておくと、リャンメンカンチャンの形を残せます。 一盃口にこだわって、7p を切ると受けが狭くなってしまいます。 2p7p という順番で切られたときに、筋の 1p4p が待ちが残る典型的な例です。

2m3m3m3m4m5m7m

ここからは 3m 切りでリャンメンカンチャンにできますが、これは罠で、この場合は 7m 切りの 1m4m3m6m 待ちにするのが受け入れ枚数で有利です。 ただ、受けとしては 3m が 1 枚だけ増えるだけなので、すでに場に 3m が見えているときは、3m 切りからの変化を見るのもありです。 あと、ピンフが必要な場合も、3m 切りでリャンメンカンチャンを残すのがよいです。

2s3s3s4s5s5s7s

この形は、多くの人が間違っていると思われるパターン。 あくまで一盃口を狙うのであれば 7s 切りでもよいですが、受け入れ枚数が 9 枚になってしまいます。 この形からも、5s 切りでリャンメンカンチャンを残すのが、受け入れ枚数(11枚)としては有利です。

2s3s4s2p3p3p4p5p7p7p2m3m3z3z

この形はトイツ落としの選択になるので、手牌全体を示しています。 7p あるいは 3z のトイツを落としていくことになるのですが、7p 切りでリャンメンカンチャンを残した方が受けが広いです。 3z トイツ落としを選択すると、6p の受け入れがなくなってしまいます。

2s2s3s3s5s7s

ここから 2 メンツ作りたいけど、1 枚外さなきゃいけないときは、2s を切るとリャンメンリャンチャンの形を残せます。 一盃口を意識しすぎて 7s を落としてしまうと、受けが狭くなってしまいます。

関連記事

更新: / 作成:
2m3p7s4m

のように、間をあけて 2m4m と手出しで切られた場合は、5m8m の筋は比較的通ることが多いです。

2m4m6m7m の形からターツ落としするのであれば、安全度を考慮して 4m2m と外すはず。 逆に、上記のような切り順になる典型的な形は 2m4m4m5m です。 2m を外しておいて、4m4m5m でしばらく粘ったと考えるのが自然です。 3p7s のようなキー牌よりも 4m を温存しておいたということは、その可能性はなかり高いです。

2m4m6m というリャンカンから、早い段階で 2m を切ってしまうことも少ないでしょう。 2m4m4m5m6m6m7m という複合系であっても、2m 切りよりは、4m 切りで 2m4m5m6m6m7m として、受け入れ枚数を最大にすることが多いと思います。

よって、上記のような捨て牌では、5m8m は勝負です!

関連記事

更新: / 作成:

プログラムで麻雀のシミュレーションを行うとき、手牌のシャンテン数を数えたいことがあります。 ここでは、機械的にシャンテン数を数えるアルゴリズムを考えてみます。 七対子や国士無双のシャンテン数は簡単に調べられるので、「4 メンツ + 1 雀頭」の基本形でアガる場合のシャンテン数を数える方法を説明します。

基本的な考え方

1m2m3m-5s5s5s-3p4p5p-1z1z1z-7z7z

このような形が、4 メンツ + 1 雀頭の基本形です。 この 5 ブロック(合計 14 枚)のアガリ形を作るために、あと何枚の牌が必要かを考えればよいことになります。 ただし、アガリまでの枚数は、聴牌であればあと 1 枚、イーシャンテンであればあと 2 枚なので、シャンテン数を数える場合は、アガリまでの枚数から 1 を引いて数えることに注意してください(アガリまであと 3 枚であれば、2 シャンテンです)。

テンパイまでに必要な枚数ではなく、現在の手牌のうち何枚使えるかを基準にして考えることもできます。 その場合は、13 - アガリ形になったときに今ある手牌のうち何枚使えるか がシャンテン数になります。

最悪のシャンテン数

1m5m9m-1s5s9s-1p4p8p-1z2z3z-5z7z

手牌に 1 つもターツがない、バラバラの状態は何シャンテンでしょうか? 13 シャンテンでしょうか? 違いますね。 仮に上記のようにバラバラの手牌であったとしても、少なくとも 5 枚の牌は 5 ブロックの中の 1 枚としてアガリ形の中で使えます。 つまり、最悪のシャンテン数は 8 シャンテン (13 - 5) です。 もちろん、実際には七対子があるので、本当の最大シャンテン数は 6 シャンテンになります。

あとは、8 シャンテンを基準にして、手牌にどのような形が含まれていればシャンテン数が減るのかを調べていけば OK です。

ターツまたはトイツができると 1 歩前進

1m2m9m-1s5s9s-1p4p8p-1z2z3z-7z7z

上記のように、ターツ ( 1m2m ) やトイツ ( 7z7z ) ができると聴牌に向かって 1 歩前進します。 このように 2 枚で構成されるターツあるいはトイツのことを ペア と呼ぶことにします(ペアの例: 1m2m3s4s7p9p4z4z )。 ペア 1 組ごとにシャンテン数は 1 つ減るので、(ペアだけを考慮した)シャンテン数は次のように計算できます。

8 - ペア数

ただし、ペアとしてカウントできるのは、最大 5 つまでです。 なぜなら、アガリ形のブロック数は最大 5 つだからです。 あと、5p5p + 5p5p のような形で、同一牌で 2 つのペアとカウントすることはできないことに注意してください。

メンツができると 2 歩前進

1m2m3m-1s5s9s-1p4p8p-1z2z3z-5z7z

ターツが 1m2m3m のようなメンツに変化すると、さらに 1 歩前進するので、メンツ数を考慮したシャンテン数は次のように計算できます。

8 - (メンツ数 x 2) - ペア数

ここでは、メンツを 2 歩前進するものと数えているので、メンツになった部分はペアのカウントを減らしてください。 メンツとペアを、それぞれ 1 つのブロックとしてカウントするのであれば、次のような計算式でも大丈夫です。

8 - メンツ数 - ブロック数

「ブロック数 = メンツ数 + ペア数」と展開すると、前の式とまったく同じです。

メンツ数による制約

ターツやトイツ(これらをペアと呼んでいます)がたくさんあっても、最終的なアガリ形は 4 メンツ + 1 雀頭になるので、やみくもにペアの数をカウントしてシャンテン数を減少させるわけにはいきません。 例えば、4 メンツ完成しているときは、残りのブロックは雀頭(トイツ)ででなければいけないので、ターツは採用できません。 3 メンツ完成しているときは、ターツは 1 つまでしか採用できません。ターツは雀頭にはなり得ないからです。 完成メンツ数に応じて、カウントできる(採用可能な)ターツの最大数は次のように変化します。

完成メンツ数カウントできるターツ数
40
31
22
13
04

つまり、カウントできるターツの最大数は「4 - 完成メンツ数」 です。

さらに、完成形は 5 ブロックなので、メンツとペアを合わせて 5 を超えてカウントすることはできません。 つまり、カウントできるトイツの最大数は「5 - 完成メンツ数 - ターツ数」 です。 ただし、このターツ数は、上記の補正を行ったあとのターツ数です。

例題として、次のような形を考えてみます(ここではツモる前の 13 枚で考えてみます)。

1m1m1m2s3s7s8s1p3p5p7p1z1z

メンツが 1 つ、ターツが 4 つ、トイツが 1 つありますが、実際に採用できるターツ最大数とトイツ最大数は次のように計算します。

  • ターツ最大数 = 4 - 完成メンツ数 = 4 - 1 = 3
    • よって、採用するターツ数は 3 となる(1 つのターツは無駄になる)
  • トイツ最大数 = 5 - 完成メンツ数 - 採用ターツ数 = 5 - 1 - 3 = 1
    • よって、採用するトイツ数は 1 となる

最終的に、シャンテン数は、8 - (1 x 2) - 3 - 1 = 2 と計算できます。 あと 2 枚で聴牌するリャンシャンテンですね。

メンツ、ターツ、トイツを数える

シャンテン数の計算式を定義できたので、あとは、手牌の中のメンツとペア(ターツ or トイツ)の数が分かればシャンテン数を計算できます。 手牌の中からメンツあるいはペアを抽出するときの形は、たかだか次のようなパターンしか存在しないので、このパターンの組み合わせを総当たりで抽出してみて、一番シャンテン数が少なくなったものが求めたいシャンテン数になるはずです。

  • ブロック抽出パターン
    1. メンツ(刻子)… 1p1p1p
    2. メンツ(順子)… 1p2p3p
    3. 対子 … 1p1p
    4. ターツ(連続形)… 1p2p
    5. ターツ(嵌張形)… 1p3p

シンプルに実装するなら、初歩的なバックトラックを使って全探索してしまえば OK です。 最適化手法としては、

  • 完全な孤立牌を最初に削除してから処理する
  • 同一色の手牌パターンから、ブロック構成を求めるテーブルを用意しておく

などがあるようですが、何百万回も実行するようなシミュレーションでなければ、単純なバックトラックだけでも速度的には問題なさそうです。

ソースコードは後ほど公開予定です。

メニュー

まくまく麻雀ノート
サイトマップまくへのメッセージ