holdem 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|