the_gambler 1.0.0 → 1.1.0
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.
- data/CHANGELOG.md +13 -0
- data/README.md +1 -0
- data/VERSION +1 -1
- data/lib/the_gambler/poker.rb +13 -6
- data/spec/hands/seven_or_nine_card_spec.rb +62 -0
- data/the_gambler.gemspec +3 -1
- metadata +4 -2
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/lib/the_gambler/poker.rb
CHANGED
@@ -95,17 +95,24 @@ module TheGambler
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def straight?
|
98
|
-
values = contents.map(&:numerical_value).sort
|
99
|
-
values == (values.min..values.max).to_a or values == [2, 3, 4, 5, 14]
|
98
|
+
# values = contents.map(&:numerical_value).sort
|
99
|
+
# values == (values.min..values.max).to_a or values == [2, 3, 4, 5, 14]
|
100
|
+
nums = contents.map(&:numerical_value)
|
101
|
+
return true if nums.sort == [2, 3, 4, 5, 14]
|
102
|
+
|
103
|
+
(2..14).each_cons(5) do |straight|
|
104
|
+
return true if (nums & straight).count == 5
|
105
|
+
end
|
100
106
|
end
|
101
107
|
|
102
108
|
def flush?
|
103
|
-
contents.
|
109
|
+
c = contents.group_by(&:suit)
|
110
|
+
!! contents.group_by(&:suit).values.detect{|k| k.count == 5}
|
104
111
|
end
|
105
112
|
|
106
113
|
def full_house?
|
107
|
-
|
108
|
-
|
114
|
+
c = contents.group_by(&:numerical_value).values.map(&:count)
|
115
|
+
c.any?{|x| x == 3} and c.select{|x| x >= 2}.count >= 2
|
109
116
|
end
|
110
117
|
|
111
118
|
def four_of_a_kind?
|
@@ -117,7 +124,7 @@ module TheGambler
|
|
117
124
|
end
|
118
125
|
|
119
126
|
def royal_flush?
|
120
|
-
contents.sort_by(&:numerical_value).map(&:to_s).join =~ %r{
|
127
|
+
contents.sort_by(&:numerical_value).map(&:to_s).join =~ %r{10([SCHD])J\1Q\1K\1A\1}i
|
121
128
|
end
|
122
129
|
|
123
130
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module TheGambler
|
4
|
+
describe Hand do
|
5
|
+
context 'seven-card hands' do
|
6
|
+
it 'should recognize a royal flush within a seven-card hand' do
|
7
|
+
Hand.new(*%w{2D QH KH 4C JH 10H AH}).royal_flush?.should be_true
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should recognize a straight flush within a seven-card hand' do
|
11
|
+
Hand.new(*%w{9H QH KH 4C JH 10H 7D}).straight_flush?.should be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'with four of a kind' do
|
15
|
+
it 'should recognize a four of a kind within a seven-card hand' do
|
16
|
+
Hand.new(*%w{9D 9H 9C 4C 9S 10H 7D}).four_of_a_kind?.should be_true
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should recognize four of a kind and three of a kind at the same time as four of a kind only' do
|
20
|
+
Hand.new(*%w{9D 9H 9C 4C 9S 4H 4D}).four_of_a_kind?.should be_true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with a full house' do
|
25
|
+
it 'should recognize a full house within a seven-card hand' do
|
26
|
+
Hand.new(*%w{9D 9H 9H 4C 4H 10H 7D}).full_house?.should be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should recognize a full house within a seven-card hand' do
|
30
|
+
Hand.new(*%w{9D 9H 9H 4C 4H 4H 7D}).full_house?.should be_true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should recognize a flush within a seven-card hand' do
|
35
|
+
Hand.new(*%w{9H QH KH 4C 6H 10H 7D}).flush?.should be_true
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'with a straight' do
|
39
|
+
it 'should recognize a straight within a seven-card hand' do
|
40
|
+
Hand.new(*%w{9D QH KH JC 6H 10H 7D}).straight?.should be_true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should recognize a three of a kind within a seven-card hand' do
|
45
|
+
Hand.new(*%w{QD QH QC 4C JH 10H 7D}).three_of_a_kind?.should be_true
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should recognize a two pair within a seven-card hand' do
|
49
|
+
Hand.new(*%w{9D QH 9H 4C 4H 10H QD}).two_pair?.should be_true
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should recognize a pair within a seven-card hand' do
|
53
|
+
Hand.new(*%w{KD QH KH 4C JH 10H 7D}).one_pair?.should be_true
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should recognize a high card within a seven-card hand' do
|
57
|
+
Hand.new(*%w{9D QH KH 4C 2H 10H 7D}).high_card?.should be_true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
data/the_gambler.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "the_gambler"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["max thom stahl"]
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".rspec",
|
22
|
+
"CHANGELOG.md",
|
22
23
|
"Gemfile",
|
23
24
|
"Gemfile.lock",
|
24
25
|
"LICENSE.txt",
|
@@ -45,6 +46,7 @@ Gem::Specification.new do |s|
|
|
45
46
|
"spec/hands/poker/hand_three_of_a_kind_spec.rb",
|
46
47
|
"spec/hands/poker/hand_two_pair_spec.rb",
|
47
48
|
"spec/hands/poker/kicker_cards_spec.rb",
|
49
|
+
"spec/hands/seven_or_nine_card_spec.rb",
|
48
50
|
"spec/players/player_spec.rb",
|
49
51
|
"spec/spec_helper.rb",
|
50
52
|
"spec/support/shared_examples/shared_poker_hands.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: the_gambler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -118,6 +118,7 @@ extra_rdoc_files:
|
|
118
118
|
files:
|
119
119
|
- .document
|
120
120
|
- .rspec
|
121
|
+
- CHANGELOG.md
|
121
122
|
- Gemfile
|
122
123
|
- Gemfile.lock
|
123
124
|
- LICENSE.txt
|
@@ -144,6 +145,7 @@ files:
|
|
144
145
|
- spec/hands/poker/hand_three_of_a_kind_spec.rb
|
145
146
|
- spec/hands/poker/hand_two_pair_spec.rb
|
146
147
|
- spec/hands/poker/kicker_cards_spec.rb
|
148
|
+
- spec/hands/seven_or_nine_card_spec.rb
|
147
149
|
- spec/players/player_spec.rb
|
148
150
|
- spec/spec_helper.rb
|
149
151
|
- spec/support/shared_examples/shared_poker_hands.rb
|
@@ -164,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
164
166
|
version: '0'
|
165
167
|
segments:
|
166
168
|
- 0
|
167
|
-
hash:
|
169
|
+
hash: 9032265535672364
|
168
170
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
171
|
none: false
|
170
172
|
requirements:
|