AOJ 0038 (Poker Hand : ポーカー)
【問題】
https://onlinejudge.u-aizu.ac.jp/problems/0038
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0038
【解説】
ポーカーの役判定を行う問題。以下の優先順位に従って判定していけばよい。
- 同一のカードが4枚あればフォーカード
- 同一のカードが3枚がある、かつ同一のカードが2枚あればフルハウス
- "ストレート判定"結果がtrueならストレート
- 同一のカードが3枚あればスリーカード
- 同一のカードが2枚ある数字が2組あればツーペア
- 同一のカードが2枚あればワンペア
- それ以外はノーペア
ストレート判定については、カードを昇順にソートし、組み合わせが{1,10,11,12,13}、または各カードの差が1であれば、trueを返すようにすればよい。
上記の判定のため、カードのナンバーをインデックスとしたコレクションを用意して起き、度数表のようにカードの数を格納しておくと、Linqを使用して簡単に判定できる。
【コード】