Anonymous user
Poker hand analyser: Difference between revisions
m
→Basic Version
m (→Basic Version) |
m (→Basic Version) |
||
Line 1,991:
parseCard xs = Card <$> parseSuit <*> parseRank
where
parseRank = case
"
"
"
"
"
"
"
"
"
"
"
"
_ -> Nothing▼
▲ _ -> Nothing
'♦' -> Just Diamond
▲ parseSuit = case s of
'
'
_ -> Nothing▼
▲ _ -> Nothing
nameHand :: String -> String
Line 2,029 ⟶ 2,026:
cards = mapMaybe parseCard (words s)
sortedRank = sort $ rank <$> cards
rankCounts = sortBy (compare `on` snd) $ (\c@(r : _) -> (r, length c)) <$> group sortedRank
▲ uniqRanks = length ranks
▲ ofKind n = any ((==n) . snd) ranks
▲ straight = isSucc sortedRank || sortedRank == acesHigh
▲ where firstSuit = suit $ head cards
invalidHand = length (nub cards) /= 5
|