少牌マイティ 向聴数を求めるプログラム
こんにちは、前ケンと言います。
麻雀が好きでよくYouTubeで麻雀関係の動画を見ていますが、以下の動画を見て少牌マイティに興味を持ちました。
麻雀は雀魂や天鳳などのネット麻雀で打つことが多いのですが、当然それらで少牌マイティを打てるわけではなく、かといっていきなり少牌マイティを打てる雀荘でフリーで打つのは流石に怖いのでどうしてもネットやゲームで打ちたいと思い、「なければ作ればいいじゃない」精神で自分で作ろうと思いました。
といっても一から作ったわけではなく、以下のOSSを使って少牌マイティ向けに改造しています。
現在少牌マイティの牌理ツールは完成しました。面前でしか判定できませんが、4枚使い七対子にも対応しています。
少牌マイティの牌理ツール作成のため、向聴数を数えるプログラムを少牌マイティ向けに手を加えたのでそちらについて説明します。
向聴数を求める公式(通常麻雀)
少牌マイティの向聴数を求める前に、まず通常麻雀の向聴数を求める公式について説明します。少牌マイティに限らず麻雀のプログラムを作るにあたり、向聴数を求めるプログラムの実装が必要となります。
麻雀の和了形は4面子1雀頭形以外に七対子形、国士無双形があるのでそれぞれ実装する必要があります。
それぞれの和了系の向聴数に関しては以下の公式を引用しました。
4面子1雀頭形
- 向聴数 = 13 ー 面子の数 × 3 ー 搭子の数 × 2 ー 孤立牌の数
- (ただし) 面子の数 + 搭子の数 + 孤立牌の数 ≦ 5
七対子形
- 向聴数 = 13 ー 対子の数 × 2 ー 孤立牌の数
- (ただし) 対子の数 + 孤立牌の数 ≦ 7
国士無双系
これらの公式は牌の枚数にかかわらず適用することができます。
向聴数を求める公式(少牌マイティ)
通常麻雀の一向聴数を求めるプログラムを説明したところで、本題の少牌マイティで向聴数を求める公式について説明します。
実は非常に簡単でして、少牌マイティは通常麻雀で言うところの一向聴が聴牌(向聴数=0)、聴牌が和了(向聴数=-1)となるので、以上に説明した公式の13、または12から1を引くだけです。
まとめると以下になります。
4面子1雀頭形
- 向聴数 = 12 ー 面子の数 × 3 ー 搭子の数 × 2 ー 孤立牌の数
- (ただし) 面子の数 + 搭子の数 + 孤立牌の数 ≦ 5
七対子形
- 向聴数 = 12 ー 対子の数 × 2 ー 孤立牌の数
- (ただし) 対子の数 + 孤立牌の数 ≦ 7
国士無双系
なので参考にしたOSSの向聴数を求めるプログラムにあるそれぞれの和了系の向聴数計算の公式を上記となるよう修正しただけで対応することができました。
ただし、七対子に関しては少牌マイティでは4枚使い七対子を採用しておりそちらに対応するために七対子形の向聴数計算は少し手を加える必要があります。
そちらについては次回の記事で説明予定です。