API

Internal evaluate methods

PokerHandEvaluator.evaluate5Function
evaluate5(cards::Card...)
evaluate5(::Card,::Card,::Card,::Card,::Card)
evaluate5(::Tuple{Card,Card,Card,Card,Card})

This is PokerHandEvaluator.jl's core method.

Returns the rank (an Int) from 1:7462:

(A♡,K♡,Q♡,J♡,10♡) -> 1
...
(7♡,5♢,4♣,3♠,2♡) -> 7462

for 5-card hands only.

source
PokerHandEvaluator.evaluateFunction
evaluate(cards::Card...)
evaluate(::Card,::Card,::Card,::Card,::Card[,::Card,::Card])
evaluate(::Tuple{Card,Card,Card,Card,Card[,Card,Card]})

Evaluates 5, 6, and 7-card hands using evaluate5. This is done by using Combinatorics.combinations to evaluate all possible 5, 6, and 7-card hand combinations.

source

Exported types/methods

PokerHandEvaluator.CompactHandEvalType
CompactHandEval(cards::Card...)
CompactHandEval(::Card,::Card,::Card,::Card,::Card[,::Card,::Card])
CompactHandEval(::Tuple{Card,Card,Card,Card,Card[,::Card,::Card]})

A compact hand evaluation, with supporting methods: hand_rank, hand_type.

Examples

using PlayingCards
using PokerHandEvaluator
table_cards = (J♡,J♣,A♣,A♢);
player_cards = (
  (A♠,2♠,table_cards...),
  (J♠,J♣,table_cards...),
);
che = CompactHandEval.(player_cards);
winner_id = argmin(hand_rank.(che)) # = 2
winning_hand = hand_type(che[winner_id]) # = :quads
source
PokerHandEvaluator.FullHandEvalType
FullHandEval(cards::Card...)
FullHandEval(::Card,::Card,::Card,::Card,::Card[,::Card,::Card])
FullHandEval(::Tuple{Card,Card,Card,Card,Card[,::Card,::Card]})

A compact hand evaluation, with supporting methods: hand_rank, hand_type, best_cards, all_cards.

Examples

using PlayingCards, PokerHandEvaluator
table_cards = (J♡,J♣,2♣,3♢,5♣)
player_cards = (
  (A♠,2♠,table_cards...),
  (J♠,T♣,table_cards...),
);
fhe = FullHandEval.(player_cards);
winner_id = argmin(hand_rank.(fhe)) # = 2
winning_hand = hand_type(fhe[winner_id]) # = :trips
winning_rank = hand_rank(fhe[winner_id]) # = 1842
winning_cards = best_cards(fhe[winner_id]) # = (J♠, T♣, J♡, J♣, 5♣)
allcards = all_cards(fhe[winner_id]) # = (J♠, T♣, J♡, J♣, 2♣, 3♢, 5♣)
source
PokerHandEvaluator.hand_typeFunction
hand_type(::AbstractHandEvaluation)

A Symbol corresponding to the type of hand. Concretely, hand_type returns one of:

  • :straight_flush
  • :quads
  • :full_house
  • :flush
  • :straight
  • :trips
  • :two_pair
  • :one_pair
  • :high_card
source
PokerHandEvaluator.hand_rankFunction
hand_rank(::AbstractHandEvaluation)

The hand rank, between 1 (straight royal flush) and 7462 (7 high with lowest kickers):

(A♡,K♡,Q♡,J♡,10♡) -> 1
...
(7♡,5♢,4♣,3♠,2♡) -> 7462
source