games_dice 0.3.2 → 0.3.3

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.
@@ -8,10 +8,10 @@
8
8
  #endif
9
9
 
10
10
  // Force inclusion of hash declarations (only MRI includes by default)
11
- #if RJB_RUBY_VERSION_CODE < 190
12
- #include "st.h"
13
- #else
11
+ #ifdef HAVE_RUBY_ST_H
14
12
  #include "ruby/st.h"
13
+ #else
14
+ #include "st.h"
15
15
  #endif
16
16
 
17
17
  VALUE Probabilities = Qnil;
@@ -230,7 +230,7 @@ static ProbabilityList *pl_add_distributions_mult( int mul_a, ProbabilityList *p
230
230
  int i,j;
231
231
  for ( i=0; i < pl_a->slots; i++ ) { for ( j=0; j < pl_b->slots; j++ ) {
232
232
  int k = mul_a * (i + pl_a->offset) + mul_b * (j + pl_b->offset) - combined_min;
233
- pr[ i + j ] += (pl_a->probs)[i] * (pl_b->probs)[j];
233
+ pr[ k ] += (pl_a->probs)[i] * (pl_b->probs)[j];
234
234
  } }
235
235
  calc_cumulative( pl );
236
236
  return pl;
data/games_dice.gemspec CHANGED
@@ -16,7 +16,14 @@ Gem::Specification.new do |gem|
16
16
  gem.add_development_dependency "rspec", ">= 2.13.0"
17
17
  gem.add_development_dependency "rake", ">= 1.9.1"
18
18
  gem.add_development_dependency "yard", ">= 0.8.6"
19
- gem.add_development_dependency "redcarpet", ">=2.3.0"
19
+
20
+ if RUBY_VERSION < "1.9.0"
21
+ # Red Carpet v3.0.0 does not compile for 1.8.7
22
+ gem.add_development_dependency "redcarpet", ">=2.3.0", "<3.0.0"
23
+ else
24
+ gem.add_development_dependency "redcarpet", ">=2.3.0"
25
+ end
26
+
20
27
  gem.add_development_dependency "rake-compiler"
21
28
 
22
29
  gem.add_dependency "parslet", ">= 1.5.0"
@@ -1,3 +1,3 @@
1
1
  module GamesDice
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
@@ -78,6 +78,18 @@ describe GamesDice::Probabilities do
78
78
  h[4].should be_within(1e-9).of 2.0/24
79
79
  h[5].should be_within(1e-9).of 1.0/24
80
80
  end
81
+
82
+ it "should add asymmetric distributions accurately" do
83
+ da = GamesDice::Probabilities.new( [0.7,0.0,0.3], 2 )
84
+ db = GamesDice::Probabilities.new( [0.5,0.3,0.2], 2 )
85
+ pr = GamesDice::Probabilities.add_distributions_mult( 1, da, 2, db )
86
+ h = pr.to_h
87
+ h.should be_valid_distribution
88
+ h[6].should be_within(1e-9).of 0.7 * 0.5
89
+ h[8].should be_within(1e-9).of 0.7 * 0.3 + 0.3 * 0.5
90
+ h[10].should be_within(1e-9).of 0.7 * 0.2 + 0.3 * 0.3
91
+ h[12].should be_within(1e-9).of 0.3 * 0.2
92
+ end
81
93
  end
82
94
 
83
95
  describe "#from_h" do
metadata CHANGED
@@ -1,121 +1,134 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: games_dice
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 3
10
+ version: 0.3.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Neil Slater
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2013-07-10 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-07-11 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: rspec
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 2.13.0
22
- type: :development
23
22
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 59
29
+ segments:
30
+ - 2
31
+ - 13
32
+ - 0
29
33
  version: 2.13.0
30
- - !ruby/object:Gem::Dependency
31
- name: rake
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: 1.9.1
38
34
  type: :development
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
39
38
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 49
45
+ segments:
46
+ - 1
47
+ - 9
48
+ - 1
45
49
  version: 1.9.1
46
- - !ruby/object:Gem::Dependency
47
- name: yard
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: 0.8.6
54
50
  type: :development
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: yard
55
54
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
57
56
  none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 51
61
+ segments:
62
+ - 0
63
+ - 8
64
+ - 6
61
65
  version: 0.8.6
62
- - !ruby/object:Gem::Dependency
63
- name: redcarpet
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: 2.3.0
70
66
  type: :development
67
+ version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
69
+ name: redcarpet
71
70
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
73
72
  none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 2
79
+ - 3
80
+ - 0
77
81
  version: 2.3.0
78
- - !ruby/object:Gem::Dependency
79
- name: rake-compiler
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
82
+ - - <
83
+ - !ruby/object:Gem::Version
84
+ hash: 7
85
+ segments:
86
+ - 3
87
+ - 0
88
+ - 0
89
+ version: 3.0.0
86
90
  type: :development
91
+ version_requirements: *id004
92
+ - !ruby/object:Gem::Dependency
93
+ name: rake-compiler
87
94
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
95
+ requirement: &id005 !ruby/object:Gem::Requirement
89
96
  none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ type: :development
105
+ version_requirements: *id005
106
+ - !ruby/object:Gem::Dependency
95
107
  name: parslet
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: 1.5.0
102
- type: :runtime
103
108
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
109
+ requirement: &id006 !ruby/object:Gem::Requirement
105
110
  none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 1
117
+ - 5
118
+ - 0
109
119
  version: 1.5.0
110
- description: A library for simulating dice. Use it to construct dice-rolling systems
111
- used in role-playing and board games.
112
- email:
120
+ type: :runtime
121
+ version_requirements: *id006
122
+ description: A library for simulating dice. Use it to construct dice-rolling systems used in role-playing and board games.
123
+ email:
113
124
  - slobo777@gmail.com
114
125
  executables: []
115
- extensions:
126
+
127
+ extensions:
116
128
  - ext/games_dice/extconf.rb
117
129
  extra_rdoc_files: []
118
- files:
130
+
131
+ files:
119
132
  - .gitignore
120
133
  - .travis.yml
121
134
  - Gemfile
@@ -152,36 +165,38 @@ files:
152
165
  - spec/reroll_rule_spec.rb
153
166
  homepage: https://github.com/neilslater/games_dice
154
167
  licenses: []
168
+
155
169
  post_install_message:
156
170
  rdoc_options: []
157
- require_paths:
171
+
172
+ require_paths:
158
173
  - lib
159
- required_ruby_version: !ruby/object:Gem::Requirement
174
+ required_ruby_version: !ruby/object:Gem::Requirement
160
175
  none: false
161
- requirements:
162
- - - ! '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
165
- segments:
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ hash: 3
180
+ segments:
166
181
  - 0
167
- hash: -551610733776225625
168
- required_rubygems_version: !ruby/object:Gem::Requirement
182
+ version: "0"
183
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
184
  none: false
170
- requirements:
171
- - - ! '>='
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- segments:
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ hash: 3
189
+ segments:
175
190
  - 0
176
- hash: -551610733776225625
191
+ version: "0"
177
192
  requirements: []
193
+
178
194
  rubyforge_project:
179
195
  rubygems_version: 1.8.24
180
196
  signing_key:
181
197
  specification_version: 3
182
- summary: Simulates and explains dice rolls from simple "1d6" to complex "roll 7 ten-sided
183
- dice, take best 3, results of 10 roll again and add on".
184
- test_files:
198
+ summary: Simulates and explains dice rolls from simple "1d6" to complex "roll 7 ten-sided dice, take best 3, results of 10 roll again and add on".
199
+ test_files:
185
200
  - spec/bunch_spec.rb
186
201
  - spec/complex_die_spec.rb
187
202
  - spec/dice_spec.rb