github.com/jefffederman/gophe@v0.0.0-20221203163656-b38beff92772/rank.go (about) 1 package gophe 2 3 type RankCategory uint8 4 5 const ( 6 StraightFlush RankCategory = iota + 1 7 FourOfAKind 8 FullHouse 9 Flush 10 Straight 11 ThreeOfAKind 12 TwoPair 13 OnePair 14 HighCard 15 ) 16 17 var RankCategoryDescription = [11]string{ 18 "s", 19 "Straight Flush", 20 "Four Of a Kind", 21 "Full House", 22 "Flush", 23 "Straight", 24 "Three Of a Kind", 25 "Two Pair", 26 "One Pair", 27 "High Card", 28 } 29 30 func GetRankCategory(rank uint16) RankCategory { 31 switch true { 32 case rank > 6185: 33 return HighCard 34 case rank > 3325: 35 return OnePair 36 case rank > 2467: 37 return TwoPair 38 case rank > 1609: 39 return ThreeOfAKind 40 case rank > 1599: 41 return Straight 42 case rank > 322: 43 return Flush 44 case rank > 166: 45 return FullHouse 46 case rank > 10: 47 return FourOfAKind 48 default: 49 return StraightFlush 50 } 51 } 52 53 func DescribeRankCategory(category RankCategory) string { 54 return RankCategoryDescription[category] 55 } 56 57 func DescribeRank(rank uint16) string { 58 return RankDescription[rank][1] 59 } 60 61 func DescribeSampleHand(rank uint16) string { 62 return RankDescription[rank][0] 63 } 64 65 func IsFlush(rank uint16) bool { 66 switch GetRankCategory(rank) { 67 case StraightFlush: 68 return true 69 case Flush: 70 return true 71 default: 72 return false 73 } 74 } 75 76 type Rank struct { 77 value uint16 78 } 79 80 func (a Rank) Compare(b Rank) int { 81 return int(a.value) - int(b.value) 82 } 83 84 func (r Rank) GetValue() uint16 { 85 return r.value 86 } 87 88 func (r Rank) GetCategory() RankCategory { 89 return GetRankCategory(r.GetValue()) 90 } 91 92 func (r Rank) DescribeCategory() string { 93 return DescribeRankCategory(r.GetCategory()) 94 } 95 96 func (r Rank) DescribeRank() string { 97 return DescribeRank(r.GetValue()) 98 } 99 100 func (r Rank) DescribeSampleHand() string { 101 return DescribeSampleHand(r.GetValue()) 102 } 103 104 func (r Rank) IsFlush() bool { 105 return IsFlush(r.GetValue()) 106 }