五張牌的相關的牌型如下:
「同花順」為同花色五張連續數字,相同花色的「順子」,得分7分;
「四條」為四張同數字的牌,外加任一單張的五張牌,得分6分;
「葫蘆」為三張同數字,另兩張同數字的牌;一個「一對」和「三條」所組成的五張牌;得分5分;
「順子」為五張數字連續的牌,數字各差1點的連續牌,從 A-2-3-4-5(1-2-3-4-5),到10-J-Q-K-A(有10-11-12-13-14,但沒有J-Q-K-A-2),得分4分;
「三條」五張牌中包含三張同數字的牌,得分3分;
「兩對」五張牌中包含兩對兩同數字的牌,但不是四張相同數字的牌(非四條),得分2分;
「一對」五張牌中包含只有兩張同數字的牌,得分1分;
「雜牌」指不屬於以上任何一種組合,得分 0 分。
------------------------------------------------------------------
這題的牌型跟分數,相信大家雖然看得懂,但要把這些規則與計分一一寫出來光是想到就懶了
這邊提供一個簡便的方式:
先把牌型分成兩類:「順子類」、「對子(pair)類」
如果有牌重複→對子類
沒有牌重複→順子類(也可能是雜牌)
先說明順子類的判斷:
因為已經確定沒有牌重複,所以把五張牌排序後,最大牌點數-最小牌點數如果是4就是順子,
再處理例外情形(10~A),排出來會變(1,10,11,12,13),此時可以從第一張跟第二張牌有最大的差距來檢查
而不用一一判斷。
順子如果花色相同就是同花順,要轉成花色後判斷或直接從輸入的數字判斷都行
接著是對子的判斷:
「一對」得分1分;
「兩對」得分2分;
「三條」得分3分;
「葫蘆」得分5分;
「四條」得分6分;
這些牌型跟分數都是建立在相同點數之下,底下用a,b,c,d,e代表不同的點數:
a b c d e 五張牌點數都不同,0分(在尚未判斷是否為順子情況下)
a a b c d 「一對」得分1分
↑ 輸入第二張a 時,發現前面有一張a了,分數+1
a a b b d 「兩對」得分2分
↑ 輸入第二張a 時,發現前面有一張a了,分數+1
↑ 輸入第二張b 時,發現前面有一張b了,分數+1
a a a b c 「三條」得分3分
↑ 輸入第二張a 時,發現前面有一張a了,分數+1
↑ 輸入第三張a 時,發現前面有兩張a了,分數+2
a a a b b 「葫蘆」得分5分
↑ 輸入第二張a 時,發現前面有一張a了,分數+1
↑ 輸入第三張a 時,發現前面有兩張a了,分數+2
↑ 輸入第二張b 時,發現前面有一張b了,分數+1
a a a a b 「四條」得分6分
↑ 輸入第二張a 時,發現前面有一張a了,分數+1
↑ 輸入第三張a 時,發現前面有兩張a了,分數+2
↑ 輸入第四張a 時,發現前面有三張a了,分數+3
用這方式計算下來,所有的對子類型都可以有一個規律的「分數」算法,每種牌型分數又不同,且各牌型的分數幾乎跟題目的得分相同,
唯一只有「葫蘆」分數4分,只要判斷這情況再把1分補上即可。
以上