現在の麻雀の手が勝ち手かどうかを判断するアルゴリズムを探しています。ゲームに慣れていない場合は、基本的な考え方 (簡略化) を次に示します。
- タイルは 3 組あり、それぞれにランク 1 ~ 9 のタイルが含まれています。特別なタイルもあり、7 種類あります。各タイルは 4 つのコピーで存在するため、各スーツのタイルは 36 枚、特別なタイルは 28 枚あります。
- 手札には 14 枚のタイルがあります。
- チャウは、連続したランクを持つ 1 つのスーツの 3 つのタイルのセットです。
- ピンポンは 3 つの同一の牌のセットです。
- コングは 4 つの同一の牌のセットです。
- ペアは、2 つの同一のタイルのセットです。
- 勝ちの手とは、タイルが任意の数のチャウ、ポン、および/またはコングと 1 つのペアを形成するものです。
ハンドはスーツ順、次にランク順でソートされます。私の考えは次のようなものです:
- すべてのタイルを未訪問で未勝利としてマークします。
- 最初の未訪問のタイルにアクセスします。
- チャウ、ポン、またはコングに遭遇するまで、またはその可能性がなくなるまで、後続の牌を確認してください。組み合わせが完了したら、参加しているすべてのタイルを訪問して勝利としてマークします
- すべてのタイルにアクセスした場合は、すべてのタイルが勝っているかどうかを確認します。すべてのタイルが訪問されていない場合は、2 に進みます。
問題は、タイルがコンビネーションの一部になると、他のコンビネーションのメンバーになることはできず、ハンドを勝ちにする可能性があることです。
実用的なアルゴリズムのアイデアはありますか?