チャットでのディスカッションから@MartinBüttnerに感謝します
麻雀は、アジアで非常に人気のあるタイルゲームです。通常、4人のプレイヤーでプレイされ、ゲームの目標は、タイルを使用して有効なハンドを完了する最初の人になることです。この課題では、ゲームの簡易バージョンであるPPCG麻雀を検討します。
PPCG麻雀には3つのスーツがあります- m、pそしてs-タイルはから1まで番号が付けられてい9ます。各タイルのコピーは正確に4つあり、タイルは番号とそれに続くスーツ(たとえば3m、9s)で示されます。
完成したPPCG麻雀ハンドは、3セットと4セットで構成され、合計14タイルです。
3つのセットは次のいずれかです。
- 同じタイルの3つ(たとえば
4s 4s 4s、ではない4m 4p 4s)、または - 同じスーツ内の3つの連続したタイルのシーケンス(例:
1s 2s 3sor6p 7p 8pnot3s 4m 5mor or3p 5p 7p)。シーケンスはラップしません(9m 1m 2m無効です)。
ペアは、単純に2つの同一のタイルです(例:)5s 5s。
チャレンジ
プログラムには、13個のタイルのスペースで区切られた手が届き、各タイルは4回までしか表示されません。完全なプログラムまたは文字列を受け取る関数のいずれかを記述できます。
あなたの仕事は、ハンドに追加すると完成したPPCG麻雀ハンドを形成する可能性のあるすべての14番目のタイル(「待機」)を見つけることです。出力されるタイルはスペースで区切る必要がありますが、順序は任意です。先頭または末尾の空白は許可されます。
プログラムは、1分以内で妥当な時間内に実行する必要があります。
例
Input: 1m 1m 1m 4s 4s 4s 7p 7p 7p 3m 3m 3m 9s
Output: 9s
Input: 1m 1m 1m 3m 3m 3m 5m 5m 5m 2s 3s 7p 8p
Output:
Input: 1m 2m 2m 3m 3m 3m 3m 4m 1s 1s 9s 9s 9s
Output: 1s
Input: 1m 1m 1m 2m 3m 4m 5m 6m 7m 8m 9m 9m 9m
Output: 1m 2m 3m 4m 5m 6m 7m 8m 9m
Input: 1m 1m 1m 5p 2m 3m 5p 7s 8s 5p 9s 9s 9s
Output: 1m 4m 6s 9s
最初の例では、1m 4s 7p 3mすべてが既存のトリプレット9sを形成し、孤立してペアを形成します。
2番目の例では、2s 3sand 7p 8pはシーケンスのみを形成でき、残りのタイルはトリプレットのみを形成できます。したがって、ペアを形成することはできず、出力はありません。
3番目の例では、手がに分割され1m2m3m 2m3m4m 3m3m 1s1s 9s9s9sます。通常、これはの待機になりますが、3m 1s4つすべて3mが使用されているため、使用可能な待機はのみです1s。
4番目の例では、すべてのmタイルがハンドを完成させます。たとえば、の場合、完成したハンドを1m持ち1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9mます。
4番目の例と5番目の例の残りの部分を試してみてください:)