combinatorial-0.1.1: Count, enumerate, rank and unrank combinatorial objects
Safe HaskellSafe-Inferred
LanguageHaskell98

Combinatorics.CardPairs

Description

Compute how often it happens that a Queen and a King are adjacent in a randomly ordered card set.

Synopsis

general

data Card Source #

Constructors

Other 
Queen 
King 

Instances

Instances details
Enum Card Source # 
Instance details

Defined in Combinatorics.CardPairs

Methods

succ :: Card -> Card #

pred :: Card -> Card #

toEnum :: Int -> Card #

fromEnum :: Card -> Int #

enumFrom :: Card -> [Card] #

enumFromThen :: Card -> Card -> [Card] #

enumFromTo :: Card -> Card -> [Card] #

enumFromThenTo :: Card -> Card -> Card -> [Card] #

Show Card Source # 
Instance details

Defined in Combinatorics.CardPairs

Methods

showsPrec :: Int -> Card -> ShowS #

show :: Card -> String #

showList :: [Card] -> ShowS #

Eq Card Source # 
Instance details

Defined in Combinatorics.CardPairs

Methods

(==) :: Card -> Card -> Bool #

(/=) :: Card -> Card -> Bool #

Ord Card Source # 
Instance details

Defined in Combinatorics.CardPairs

Methods

compare :: Card -> Card -> Ordering #

(<) :: Card -> Card -> Bool #

(<=) :: Card -> Card -> Bool #

(>) :: Card -> Card -> Bool #

(>=) :: Card -> Card -> Bool #

max :: Card -> Card -> Card #

min :: Card -> Card -> Card #

data CardCount i Source #

Constructors

CardCount 

Instances

Instances details
Ix i => Ix (CardCount i) Source # 
Instance details

Defined in Combinatorics.CardPairs

Show i => Show (CardCount i) Source # 
Instance details

Defined in Combinatorics.CardPairs

Eq i => Eq (CardCount i) Source # 
Instance details

Defined in Combinatorics.CardPairs

Methods

(==) :: CardCount i -> CardCount i -> Bool #

(/=) :: CardCount i -> CardCount i -> Bool #

Ord i => Ord (CardCount i) Source # 
Instance details

Defined in Combinatorics.CardPairs

allPossibilities :: CardSet a -> [[a]] Source #

possibilitiesCardsBorderNaive :: CardCount Int -> CardCount Integer Source #

Count the number of card set orderings with adjacent queen and king. We return a triple where the elements count with respect to an additional condition: (card set starts with an ordinary card ' ', start with queen q, start with king k)

allEqual [CardPairs.possibilitiesCardsBorderNaive (CardCount 2 3 5), CardPairs.possibilitiesCardsBorderDynamic (CardCount 5 5 5) ! (CardCount 2 3 5), CardPairs.possibilitiesCardsBorder2Dynamic (CardCount 5 5 5) ! (CardCount 2 3 5)]
QC.forAll genCardCount $ \cc -> allEqual [CardPairs.possibilitiesCardsBorderNaive cc, CardPairs.possibilitiesCardsBorderDynamic cc ! cc, CardPairs.possibilitiesCardsBorder2Dynamic cc ! cc]

examples

cardSetSizeRummyJK :: CardCount Int Source #

Allow both Jack and King adjacent to Queen.

tests