プロジェクト

全般

プロフィール

Problem 54 » 履歴 » バージョン 2

Noppi, 2024/01/18 23:20

1 1 Noppi
[ホーム](https://redmine.noppi.jp) - [[Wiki|Project Euler]]
2
# [[Problem 54]]
3
4
## Poker Hands
5
In the card game poker, a hand consists of five cards and are ranked, from lowest to highest, in the following way:
6
7 2 Noppi
* **High Card** : Highest value card.
8 1 Noppi
* **One Pair** : Two cards of the same value.
9
* **Two Pairs** : Two different pairs.
10
* **Three of a Kind** : Three cards of the same value.
11
* **Straight** : All cards are consecutive values.
12
* **Flush** : All cards of the same suit.
13
* **Full House** : Three of a kind and a pair.
14
* **Four of a Kind** : Four cards of the same value.
15
* **Straight Flush** : All cards are consecutive values of same suit.
16
* **Royal Flush** : Ten, Jack, Queen, King, Ace, in same suit.
17
18
The cards are valued in the order:
19
2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, Ace.
20
If two players have the same ranked hands then the rank made up of the highest value wins; for example, a pair of eights beats a pair of fives (see example 1 below). But if two ranks tie, for example, both players have a pair of queens, then highest cards in each hand are compared (see example 4 below); if the highest cards tie then the next highest cards are compared, and so on.
21
22
Consider the following five hands dealt to two players:
23
24
| **Hand** | **Player 1** | **Player 2** | **Winner** |
25
|--|--|--|--|
26
| **1** | 5H 5C 6S 7S KD<br>Pair of Fives | 2C 3S 8S 8D TD<br>Pair of Eights | Player 2 |
27
| **2** | 5D 8C 9S JS AC<br>Highest card Ace | 2C 5C 7D 8S QH<br>Highest card Queen | Player 1 |
28
| **3** | 2D 9C AS AH AC<br>Three Aces | 3D 6D 7D TD QD<br>Flush  with Diamonds | Player 2 |
29
| **4** | 4D 6S 9H QH QC<br>Pair of Queens<br>Highest card Nine | 3D 6D 7H QD QS<br>Pair of Queens<br>Highest card Seven | Player 1 |
30
| **5** | 2H 2D 4C 4D 4S<br>Full House<br>With Three Fours | 3C 3D 3S 9S 9D<br>Full House<br>with Three Threes | Player 1 |
31
32
The file, [poker.txt](https://projecteuler.net/resources/documents/0054_poker.txt), contains one-thousand random hands dealt to two players. Each line of the file contains ten cards (separated by a single space): the first five are Player 1's cards and the last five are Player 2's cards. You can assume that all hands are valid (no invalid characters or repeated cards), each player's hand is in no specific order, and in each hand there is a clear winner.
33
34
How many hands does Player 1 win?
35
36
## ポーカーハンド
37
カードゲームのポーカーでは, 手札は5枚のカードからなりランク付けされている. 役を低い方から高い方へ順に並べると以下である.
38
39
* **役無し(ハイカード)** : 一番値が大きいカード
40
* **ワン・ペア** : 同じ値のカードが2枚
41
* **ツー・ペア** : 2つの異なる値のペア
42
* **スリーカード** : 同じ値のカードが3枚
43
* **ストレート** : 5枚の連続する値のカード
44
* **フラッシュ** : 全てのカードが同じスート (注: スートとはダイヤ・ハート・クラブ/スペードというカードの絵柄のこと)
45
* **フルハウス** : スリーカードとペア
46
* **フォーカード** : 同じ値のカードが4枚
47
* **ストレートフラッシュ** : ストレートかつフラッシュ
48
* **ロイヤルフラッシュ** : 同じスートの10, J, Q, K, A
49
50
ここでカードの値は小さい方から2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, Aである. (訳注:データ中で10は'T'と表される)
51
52
もし2人のプレイヤーが同じ役の場合には, 役を構成する中で値が最も大きいカードによってランクが決まる: 例えば, 8のペアは5のペアより強い (下の例1を見よ). それでも同じランクの場合には (例えば, 両者ともQのペアの場合), 一番値が大きいカードによってランクが決まる (下の例4を見よ). 一番値が大きいカードが同じ場合には, 次に値が大きいカードが比べれられ, 以下同様にランクを決定する.
53
54
例:
55
| **試合** | **プレイヤー1** | **プレイヤー2** | **勝者** |
56
|--|--|--|--|
57
| **1** | 5H 5C 6S 7S KD<br>5のペア | 2C 3S 8S 8D TD<br>8のペア | プレイヤー2 |
58
| **2** | 5D 8C 9S JS AC<br>役無し, A | 2C 5C 7D 8S QH<br>役無し, Q | プレイヤー1 |
59
| **3** | 2D 9C AS AH AC<br>Aのスリーカード | 3D 6D 7D TD QD<br>ダイヤのフラッシュ | プレイヤー2 |
60
| **4** | 4D 6S 9H QH QC<br>Qのペア, 9 | 3D 6D 7H QD QS<br>Qのペア, 7 | プレイヤー1 |
61
| **5** | 2H 2D 4C 4D 4S<br>4-2のフルハウス | 3C 3D 3S 9S 9D<br>3-9のフルハウス | プレイヤー1 |
62
63
[poker.txt](https://projecteuler.net/resources/documents/0054_poker.txt)には1000個のランダムな手札の組が含まれている. 各行は10枚のカードからなる (スペースで区切られている): 最初の5枚がプレイヤー1の手札であり, 残りの5枚がプレイヤー2の手札である. 以下のことを仮定してよい
64
65
* 全ての手札は正しい (使われない文字が出現しない. 同じカードは繰り返されない)
66
* 各プレイヤーの手札は特に決まった順に並んでいるわけではない
67
* 各勝負で勝敗は必ず決まる
68
69
1000回中プレイヤー1が勝つのは何回か? (訳注 : この問題に置いてA 2 3 4 5というストレートは考えなくてもよい)
70
71
```scheme
72
```