25. 牌型比大小
牌桌上有A和B兩位玩家進行牌型比大小,遊戲開始時會先各發給每人2張牌,接著再發4張牌到牌桌上。玩家需要從自己有的2張牌和牌桌上的4張牌中,選出5張牌湊出最大的牌型。最後比較玩家A和玩家B各自最大的牌型,輸出贏家名稱與贏家牌型編號。
每張牌由花色與牌面組成,花色與牌面的表示如下:
牌面: A、2~10、J、Q、K
花色:S (Spade,黑桃),H (Heart,紅心),D (Diamond,方塊), C (Club,梅花)
例如:S7 表示黑桃7
牌型編號(編號越大代表牌型越大):
(1) High Card : 單一張牌。
(2) One pair: 兩張牌數字一樣。
(3) Two pairs : 兩組 Pair 的牌。
(4) Three of a kind : 三張牌數字一樣。
(5) Straight : 數字連續的五張牌,頭尾相接亦視為Straight。例如[2, 3, 4, 5, 6],..,[Q,K , A, 2, 3], [K , A, 2, 3, 4], [A, 2, 3, 4, 5]。
(6) Flush : 五張同一花色的牌。
(7) Full House : Three of a Kind 加一組 Pair。
(8) Four of a kind: : 四張牌數字一樣。
(9) Straight flush : 數字連續的五張牌且花色一樣。
【輸入說明】
第1行:輸入一行字串,包含2張牌,每張牌中間以空白隔開,表示A拿到的2張牌
第2行:輸入一行字串,包含2張牌,每張牌中間以空白隔開,表示B拿到的2張牌
第3行:輸入一行字串,包含4張牌,每張牌中間以空白隔開,表示牌桌上的牌
範例輸入說明:
CA H7 (玩家A拿到梅花A、紅心7)
S2 SA (玩家B拿到黑桃2、黑桃A)
SJ SK SQ HA (牌桌上有黑桃J、黑桃K、黑桃Q、紅心A)
【輸出說明】
第1行:輸出贏家名稱及牌型編號,以空白隔開
範例輸出說明:
B 9
A有CA H7,牌桌上有SJ SK SQ HA。從中選5張有以下組合
CA SJ SK SQ HA 為 One pair (A手上的CA和牌桌上的SJ、SK、SQ、HA組成5張牌)
H7 SJ SK SQ HA 為 High Card (A手上的H7和牌桌上的SJ、SK、SQ、HA組成5張牌)
CA H7 SJ SK SQ 為 High Card (A手上的CA、H7和牌桌上的SJ、SK、SQ組成5張牌)
CA H7 SJ SK HA 為 One pair (A手上的CA、H7和牌桌上的SJ、SK、HA組成5張牌)
CA H7 SJ SQ HA 為 One pair (A手上的CA、H7和牌桌上的SJ、SQ、H組成5張牌)
CA H7 SK SQ HA 為 One pair (A手上的CA、H7和牌桌上的SK、SQ、HA組成5張牌)
故A最大的牌型為 One pair,編號為2
B有S2 SA,牌桌上有SJ SK SQ HA。從中選5張有以下組合
S2 SJ SK SQ AH 為 Straight (B手上的S2和牌桌上的SJ、SK、SQ、HA成5張牌)
SA SJ SK SQ AH 為 One pair (B手上的SA和牌桌上的SJ、SK、SQ、HA組成5張牌)
S2 SA SJ SK SQ 為 Straight flush (B手上的S2、SA和牌桌上的SJ、SK、SQ組成5張牌)
S2 SA SJ SK HA 為 One pair (B手上的S2、SA和牌桌上的SJ、SK、HA組成5張牌)
S2 SA SJ SQ HA 為 One pair (B手上的S2、SA和牌桌上的SJ、SQ、HA組成5張牌)
S2 SA SK SQ HA 為 One pair (B手上的S2、SA和牌桌上的SK、SQ、HA組成5張牌)
故B最大的牌型為 Straight flush,編號為9
A和B比較各自有的最大牌型,B的牌型較大,故輸出B 9
【特別要求】
1. 如果牌桌上的牌以及A和B手上的牌中有不合法的輸入,如不存在的牌面、花色,則輸出 "Error input"
2. 如果牌桌上的牌以及A和B手上的牌重複,即所有牌當中有兩張以上牌面跟花色一模一樣,則輸出"Duplicate deal"
3. 如果"Error input"和"Duplicate deal"同時發生,則輸出"Error input"
4. 如果最後A和B選擇的牌型相同,則輸出"Tie"
【測試資料一】
輸入:
SA CA
S7 C7
C2 R5 D6 R9
輸出:
Error input
【測試資料二】
輸入:
SA CA
S7 C7
C2 CC5 D6 C9
輸出:
Error input
【測試資料三】
輸入:
D4 D5
D6 S7
C10 HQ D6 SJ
輸出:
Duplicate deal
【測試資料四】
輸入:
SK C2
F10 CA
C2 CC3 C6 S4
輸出:
Error input
【測試資料五】
輸入:
D4 H9
S9 C10
H5 H6 H8 H7
輸出:
A 9
【測試資料六】
輸入:
HK C9
SJ C3
DA DQ H10 CK
輸出:
B 5
【測試資料七】
輸入:
S4 C4
H2 C9
C2 D4 H4 S8
輸出:
A 8
【測試資料八】
輸入:
CK D10
SQ H2
S3 H7 D5 CA
輸出:
Tie
【測試資料九】
輸入:
C5 C8
S6 H6
D6 D5 S5 H5
輸出:
A 8
【測試資料十】
輸入:
S6 C9
S5 H4
H6 H5 D5 C7
輸出:
B 4
【隱藏測試資料一】
輸入:
F5 U6
G9 H8
S2 C4 T6 C10
輸出:
Error input
【隱藏測試資料二】
輸入:
S6 CD9
SG5 H4
H6 HH5 DR5 CH7
輸出:
Error input
【隱藏測試資料三】
輸入:
C5 C9
C4 S6
D2 C4 H8 H10
輸出:
Duplicate deal
【隱藏測試資料四】
輸入:
F5 C6
H9 CK
CC10 CK HQ DJ
輸出:
Error input
【隱藏測試資料五】
輸入:
D2 C9
S4 H5
D4 D5 D3 D6
輸出:
A 9
【隱藏測試資料六】
輸入:
D5 H3
DA SJ
S8 S9 S7 S6
輸出:
B 6
【隱藏測試資料七】
輸入:
CQ D8
DJ HA
SJ H10 DA CK
輸出:
A 5
【隱藏測試資料八】
輸入:
S10 D9
SJ SQ
H10 HJ D10 C10
輸出:
A 8
【隱藏測試資料九】
輸入:
D6 H4
S7 H2
H7 D2 C7 C2
輸出:
B 7
【隱藏測試資料十】
輸入:
HJ S6
D3 D6
SA HK H2 CQ
輸出:
Tie