私はこのような挑戦が大好きです、うまくいけばすぐに私の答えを提出します。
どのプレイヤーが最高の7カードハンドを持っていますか?
9枚のカードの順序付けられていないリスト(スペースで区切られている)を前提として、どのプレーヤーが最高のポーカーハンドを持っているかを調べます。 これがポーカーハンドランキングのリストです。入力例:
2C 5H AS KS 2D 4D QD KH 3S
(ie: [[2C 5H] [AS KS] [2D 4D QD KH 3S]])
配列の最初の2枚のカードはプレーヤー1の手を表し、配列の2番目の2枚はプレーヤー2の手を表します。最後の5枚のカードはコミュニティカードを表し、両方のプレイヤーが共有するカードです。事実上、両方のプレーヤーは7枚のカードを持っており、どちらのプレーヤーが最高の5枚のカードポーカーハンドを持っているかを判断する必要があります。
カードは文字列として定義され、最初の文字はカードの値を表し、2番目の値はスーツを表します。常に大文字。カードが2回表示されることはありません。
この関数は、ハンドがどちらかのプレーヤーにとって引き分けか勝利かを計算します。入力の最後に合計が出力されます。出力形式は、この投稿の後半で定義されます。
例
2C 5H AS KS 2D 4D QD KH 3S
(ie: [[2C 5H] [AS KS] [2D 4D QD KH 3S]])
Player 2 wins this hand. Player 1 has a pair of 2's, player 2 has a pair of kings.
5S 6S 8H 9D 7S 8S JH TS 2H
(ie: [[5S 6S] [8H 9D] [7S 8S JH TS 2H]])
Player 1 wins this hand Player 1 has a flush, player 2 has a straight.
2S 2H AC AS 2C AH 9H TS 2D
(ie: [[2S 2H] [AC AS] [2C AH 9H TS 2D]])
Player 1 wins this hand. Player 1 has quads, player 2 has a full house
5S 6S 2D 4D 9S AS KD JC 9D
(ie: [[5S 6S] [2D 4D] [9S AS KD JC 9D]])
A draw. Both players have Ace high.
より詳しい情報
同様の問題を抱えているプロジェクトオイラーへの次のリンクを提供してくれたmgrovesに感謝します:http://projecteuler.net/index.php?section = problems&id = 54
テストデータ
プロジェクトオイラーのテストデータを使用します。
http://projecteuler.net/project/poker.txt
ソリューションは、そのテキストファイルを入力として受け入れ、勝ちと引き分けの合計を出力する必要があります。
出力例
出力は次の形式である必要があります。
1: 45
2: 32
D: 12
プレーヤー1は45ハンドを獲得し、プレーヤー2は32ハンドを獲得し、12回のドローがありました。(実際の結果ではありません)
ルール
- 勝ち手のタイプを返す必要はありません。誰かが勝った場合にのみWHOが勝ちます。
- カードリストの入力に特定の順序はありません
- 入力にカードが2回表示されない
- 入力は常に大文字です
- プロジェクトオイラーのテストデータを入力として受け取ります
- 上記の指定された形式で、プレーヤーが最も多くのハンドと合計ドローを獲得したカウントを出力します