Poker hand analyser: Difference between revisions

m
Line 2,023:
| otherwise = ": High card"
where
cards = mapMaybe parseCard (words s)
sortedRank = sort $ rank <$> cards
rankCounts = sortBy (compare `on` snd) $ (,) <$> head <*> length <$> group sortedRank
uniqRanks = length rankCounts
ofKind n = any ((==n) . snd) rankCounts
straight = isSucc sortedRank || sortedRank == acesHigh
flush = alllength ((==nub firstSuit) .$ suit) <$> cards) == 1
where firstSuit = suit $ head cards
invalidHand = length (nub cards) /= 5
 
Anonymous user