naranja #5184(2008/01/05 06:23 GMT) [ D ] Rating1/1=1.00
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 34 35 36 37 38 39 40 41 42 43
import std.stdio; import std.string; string poker(string cards){ auto suit = "SDHC"; auto rankOrder = "A23456789TJQK"; auto transRankOrder = "abcdefghijklm"; auto transRank = translate(cards, maketrans(rankOrder, transRankOrder), suit).sort; int[char] rankCount; foreach(c; transRank){ rankCount[c]++; } auto pairPattern = rankCount.values.sort; auto hand = pairPattern == [1, 1, 1, 2] ? "One pair" : pairPattern == [1, 2, 2] ? "Two pair" : pairPattern == [1, 1, 3] ? "Three of a kind" : pairPattern == [2, 3] ? "Full house" : pairPattern == [1, 4] ? "Four of a kind" : ""; if(hand == ""){ auto isFlush = cards[0] == cards[2] && cards[0] == cards[4] && cards[0] == cards[6] && cards[0] == cards[8]; hand = find(transRankOrder, transRank) != -1 ? (isFlush ? "Straight flush" : "Straight") : transRank == (transRankOrder[0] ~ transRankOrder[($ - 4)..$]) ? (isFlush ? "Royal flush" : "Straight") : (isFlush ? "Flush" : "No pair"); } return hand; } void main(){ writefln(poker("SQSJSASKST")); // Royal flush writefln(poker("D9D7D6D5D8")); // Straight flush writefln(poker("C2D2S2H3H2")); // Four of a kind writefln(poker("C2D3S2H3H2")); // Full house writefln(poker("S9S4S8STSJ")); // Flush writefln(poker("C4H7D5S6H3")); // Straight writefln(poker("S6H6C5DQC6")); // Three of a kind writefln(poker("S6HQC5DQC6")); // Two pair writefln(poker("S6H4C5DQC6")); // One pair writefln(poker("SJSQSKSAC2")); // No pair }
Rating1/1=1.00-0+
[ reply ]
naranja
#5184()
[
D
]
Rating1/1=1.00
Rating1/1=1.00-0+
[ reply ]