holdem 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -4
- data/lib/holdem/poker_hand.rb +1 -1
- data/lib/holdem/poker_rank.rb +18 -0
- data/lib/holdem/version.rb +1 -1
- data/test/poker_rank_test.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d1d95c1dff600cb0eaf1bfd9646787f98c9a5c1c5c9f6d03a2b7893b0efaab9
|
4
|
+
data.tar.gz: 9d5089fceffb55ea1f003fad9e22d68f01ea0eb09553bba3b18368113b1cef22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bee90a5e9e189725df357fc04d51f52afaf9227d29ffd4efbc7b68ca71d1c2416c77a8eadc1f4e28daae57d18915a10f22582d9f29f467de002ef763abb09bc8
|
7
|
+
data.tar.gz: 7d30c6fcfec47960f581d78b221dd6aa2d65f7d00a639d785c3b7059f92927d3381b9bc4dad8b0a5004d2553adcb8a3ae0def1362eb2aa7365ee25ad87ebe27f
|
data/README.md
CHANGED
@@ -45,10 +45,10 @@ Face cards (ten, jack, queen, king, and ace) are represented by (T, J, Q, K, A).
|
|
45
45
|
|
46
46
|
Suits (club, diamond, spade, heart) are represented by (c, d, s, h).
|
47
47
|
|
48
|
-
puts Holdem::PokerHand.new('Ac 7d 4c Td Qc Qh Ks')
|
48
|
+
puts Holdem::PokerHand.new('Ac 7d 4c Td Qc Qh Ks') # => A♣ 7♦ 4♣ T♦ Q♣ Q♥ K♠ -> Pair of Qs
|
49
49
|
|
50
|
-
card1, card2 = Card.new('Ad'), Card.new('Ah')
|
51
|
-
puts Holdem::PokerHand.new([card1, card2])
|
50
|
+
card1, card2 = Holdem::Card.new('Ad'), Holdem::Card.new('Ah')
|
51
|
+
puts Holdem::PokerHand.new([card1, card2]) # => A♦ A♥ -> Pair of As
|
52
52
|
|
53
53
|
There is also a Deck class to facilitate random poker hands:
|
54
54
|
|
@@ -74,7 +74,6 @@ Build Simulations, players, table, chips, and game objects.
|
|
74
74
|
|
75
75
|
Add methods to PokerRank for:
|
76
76
|
|
77
|
-
hand.open_ended?
|
78
77
|
hand.four_to_flush?
|
79
78
|
hand.gutshot?
|
80
79
|
|
data/lib/holdem/poker_hand.rb
CHANGED
@@ -7,7 +7,7 @@ module Holdem
|
|
7
7
|
|
8
8
|
rank_methods = [ :rank, :score, :straight_flush?, :quads?, :four_of_a_kind?,
|
9
9
|
:boat?, :full_house?, :flush?, :straight?, :three_of_a_kind?,
|
10
|
-
:trips?, :two_pairs?, :two_pair?, :pair? ]
|
10
|
+
:trips?, :two_pairs?, :two_pair?, :pair?, :open_ended? ]
|
11
11
|
def_delegators :@poker_rank, *rank_methods
|
12
12
|
|
13
13
|
attr_reader :cards, :poker_rank
|
data/lib/holdem/poker_rank.rb
CHANGED
@@ -56,6 +56,10 @@ module Holdem
|
|
56
56
|
false
|
57
57
|
end
|
58
58
|
|
59
|
+
def four_card_straight?(list)
|
60
|
+
(list.first - list.last).abs == 3 && list.uniq.length == 4
|
61
|
+
end
|
62
|
+
|
59
63
|
def five_card_straight?(list)
|
60
64
|
(list.first - list.last).abs == 4 && list.uniq.length == 5
|
61
65
|
end
|
@@ -77,6 +81,20 @@ module Holdem
|
|
77
81
|
pairs.any? { |count,_cards| count == size }
|
78
82
|
end
|
79
83
|
|
84
|
+
def open_ended?
|
85
|
+
return false if straight?
|
86
|
+
|
87
|
+
card_values = sorted_values
|
88
|
+
# Add ace to end of sorted values if present
|
89
|
+
card_values.push(1) if card_values.include?(14)
|
90
|
+
card_values.each_cons(4) do |vals|
|
91
|
+
if four_card_straight?(vals) && vals.last != 1 && vals.first != 14
|
92
|
+
return true
|
93
|
+
end
|
94
|
+
end
|
95
|
+
false
|
96
|
+
end
|
97
|
+
|
80
98
|
alias_method :quads?, :four_of_a_kind?
|
81
99
|
alias_method :trips?, :three_of_a_kind?
|
82
100
|
alias_method :boat?, :full_house?
|
data/lib/holdem/version.rb
CHANGED
data/test/poker_rank_test.rb
CHANGED
@@ -70,6 +70,20 @@ class PokerRankingTest < Minitest::Test
|
|
70
70
|
refute hand2.straight_flush?
|
71
71
|
end
|
72
72
|
|
73
|
+
def test_open_ended?
|
74
|
+
cards1 = Holdem::CardGenerator.build(%w(Jd Qd Ad Kd 2d))
|
75
|
+
hand1 = Holdem::PokerHand.new(cards1)
|
76
|
+
refute hand1.open_ended?
|
77
|
+
|
78
|
+
cards2 = Holdem::CardGenerator.build(%w(Jd Qd Td Kd 2d))
|
79
|
+
hand2 = Holdem::PokerHand.new(cards2)
|
80
|
+
assert hand2.open_ended?
|
81
|
+
|
82
|
+
cards3 = Holdem::CardGenerator.build(%w(Jd Qd Td Kd 9d))
|
83
|
+
hand3 = Holdem::PokerHand.new(cards3)
|
84
|
+
refute hand3.open_ended?
|
85
|
+
end
|
86
|
+
|
73
87
|
def test_alias_method_trips?
|
74
88
|
cards = Holdem::CardGenerator.build(%w(Jd Qd Jd Jd Td 7d Tc))
|
75
89
|
hand = Holdem::PokerHand.new(cards)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: holdem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Berczel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|