[翻譯][UVa][11789] Texas Hold'em Poker Solitaire!

John Anthony Good 常常與他的好友在星期五的晚上通霄打牌,他們玩的是現今最熱門的撲克牌遊戲 Texas Hold’em,在 Texas Hold’em 的遊戲中,每位玩家運用 2 張蓋著的牌來跟 5 張攤開的牌做組合,以組成一副最大的 5 張牌牌組,當然玩家們可以用蓋牌的兩張、其中一張或是都不用來組成。

一副撲克牌有 52 張牌,由四樣花色 (黑桃、紅心、磚塊和棉花) 以及每樣花色 13 支牌 (由小到大依序為 2、3、4、5、6、7、8、9、T、J、Q、K 和 A) 所組成。玩家可出的牌型只能依照下面其中一種:

同花順 (Straight Flush) :五張牌數字連續並且相同花色。例:6H、7H、8H、9H、TH。注意 A 可以當作最小的牌接在 2 之後,例如:AS、2S、3S、4S、5S。如果出現兩個以上的同花順,則比較牌組中最大的牌,上述兩例中前者大於後者。

鐵支 (Four of a Kind) :其中四支牌為相同數字。例:AS、AD、AH、AC、3S。如有兩者以上則比較四支牌的數字大小,然而為了避免打平的情況發生,則再需比較餘下一張牌的大小。

葫蘆 (Full House) :其中三張牌為相同數字,餘下二張為另一組相同數字。例:7C、7S、7D、KH、KS。如有兩者以上則比較三張相同牌的數字大小,為了避免打平的情況發生,則再需比較餘下一對牌的大小。

同花 (Flush) :五張牌為相同花色。例:5D、AD、KD、7D、QD。如有兩者以上則比較最大的牌,其次再比較第二大的牌,以此類推。

順子 (Straight) :五張連續數字的牌。例:TH、JD、QC、KD、AS。注意 A 也可以當作最小的牌接在 2 之後。

三條 (Three of a Kind) :三張相同數字的牌。例:QS、QH、QC、2D、3C。如有兩者以上則比較三張相同牌之大小,為了避免打平的情況發生,再比較其餘最大的牌,以此類推。

兩對 (Two Pair) :各有兩副兩張相同數字的牌。例:2C、2H、6C、6S、4D。如有兩者以上則比較數字最大的一對牌,如果相同則比較另一對。若兩對數字皆相同,則比較剩下那一支牌。

一對 (One Pair) :有一對牌的數字相同。例:2C、2H、4H、QH、KD。如有兩者以上相同則先比較一對的數字大小,接著比較餘下最大的牌,以此類推。

散牌 (High Cards) :與上述皆不成立的手牌。例:3H、7D、JD、QD、AC。若有兩者以上則先比較最大的牌,再比較第二大,以此類推。

John Anthony 每次和他的朋友打賭 5 歐元,但他總是賭輸,有時是因為他所認為自己的手牌比實際上來的低所導致,特別是當他拿到順子的時候。

為了讓他自己的牌技進步,John Anthony 創造了一個單人玩的牌戲,他先將牌洗均勻,然後拿出其中的 49 張牌攤開排成 7×7 的矩形。以下例來說明:

1
2
3
4
5
6
7
2C KC 3D 7S 7H 5D 6D
2H 7D 4H 4S TS 3H 8S
3S 5H AD 5S 6S 3C 9C
9S JC QC KD JH KS QS
6C 8H AC 2S 6H AH KH
TC AS 9H QD 7C 4C 8C
TH 2D JS 9D 8D 5C JD

這時,他檢查每一橫列 (從上到下)、每一直行 (由左至右) 以及兩條對角線 (先檢查從左上至右下,再檢查從左下至右上) ,這 16 組牌組中,John 試著挑出其中 5 張讓這 5 張變成最大的牌組 (在Texas Hold’em中)。現在,他正央求你寫一個程式來確認他所選出的牌是不是最大的。

輸入

輸入的第一行包含一個整數代表有幾筆測試資料。每組測資間被一行空白行分開,測資共有七行,每行有七張被空白隔開的牌,每張卡代表它的大小以及花色 (大小在前花色在後)。

輸出

對於每組測資,你必須輸出一行訊息。首先,輸出包括最好牌組的該七張牌 (若是橫列和對角線從左至右輸出,若是直行則由上往下輸出),之後空白兩格,再輸出最好的牌組 (相同順序下)。最後,兩格空白,輸出牌型名稱 (High CardsOne PairTwo PairThree of a KindStraightFlushFull HouseFour of a Kind 或者 Straight Flush)。為了避免兩個相同的答案,應先印出在 John Anthony 的檢查順序中首先出現的牌組。

範例輸入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
4
9H 4H TD 5H QC 7H KC
7S TS JS 8S 6D 2C 5C
QD 5S 7D KH 4S 8D 2H
TH AD QH 3D KD 9C 4D
5D 9S 8H JH AH 3S 6C
JC 7C AS 6H TC KS 8C
6S QS 2S 4C 9D AC JD
2C KC 3D 7S 7H 5D 6D
2H 7D 4H 4S TS 3H 8S
3S 5H AD 5S 6S 3C 9C
9S JC QC KD JH KS QS
6C 8H AC 2S 6H AH KH
TC AS 9H QD 7C 4C 8C
TH 2D JS 9D 8D 5C JD
9D AS KS KD AC 8D TH
AH JS 9H TC 2C QH 5S
7D JH 8C 3H 7C 5H 6H
5C 8S TS 2D QC KH 2H
JC 4H 4D 8H 2S 4C 3S
9C TD 9S 3C 7H 3D QS
KC 4S AD JD 6S 7S QD
6H JH 4H AC 5H TS 7D
AH 6S 5S 6C 4C 5D 8S
JC 8H AD 9S TC 9D 4D
8D 7C 6D 3D 8C KC 7H
4S TD 5C JD QD KD QS
9C TH 3C 2S AS QC 3H
2C 9H 3S 2D JS 7S KS

範例輸出

1
2
3
4
TH AD QH 3D KD 9C 4D TH AD QH KD 9C High Cards
6C 8H AC 2S 6H AH KH 6C AC 6H AH KH Two Pair
JC 4H 4D 8H 2S 4C 3S JC 4H 4D 8H 4C Three of a Kind
JH 6S 8H 7C TD TH 9H JH 8H 7C TD 9H Straight
,