cartesian 0.6.5 → 0.6.6
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/History.txt +6 -0
- data/Manifest.txt +2 -0
- data/README.rdoc +2 -2
- data/lib/cartesian.rb +1 -1
- data/lib/iterable.rb +25 -0
- data/website/doc/CartesianIterator.html +65 -64
- data/website/doc/Iterable.html +60 -20
- data/website/doc/README_rdoc.html +1 -1
- data/website/doc/created.rid +6 -5
- data/website/doc/index.html +2 -0
- data/website/doc/lib/cartesian_iterator_rb.html +3 -1
- data/website/doc/lib/cartesian_rb.html +1 -1
- data/website/doc/lib/grid_search_rb.html +1 -1
- data/website/index.html +2 -125
- metadata +20 -3
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -13,6 +13,7 @@ lib/cartesian/grid_search.rb
|
|
13
13
|
lib/cartesian/version.rb
|
14
14
|
lib/cartesian_iterator.rb
|
15
15
|
lib/grid_search.rb
|
16
|
+
lib/iterable.rb
|
16
17
|
script/console
|
17
18
|
script/destroy
|
18
19
|
script/generate
|
@@ -24,6 +25,7 @@ test/test_cartesian_iterator.rb
|
|
24
25
|
test/test_extensions.rb
|
25
26
|
test/test_grid_search.rb
|
26
27
|
test/test_helper.rb
|
28
|
+
test/test_iterable.rb
|
27
29
|
test/test_suite.rb
|
28
30
|
website/doc/Array.html
|
29
31
|
website/doc/Cartesian.html
|
data/README.rdoc
CHANGED
@@ -49,7 +49,7 @@ The '**' operator provides a convenient way of iterating multi-dimensionally ove
|
|
49
49
|
Finally, the grid search methods
|
50
50
|
require 'cartesian/grid_search'
|
51
51
|
[-1, 0, 1, 2].argmax {|x| x**2 } #=> 2
|
52
|
-
0.argmin {|x| x.abs } #=> 0
|
52
|
+
[-1, 0, 1, 2].argmin {|x| x.abs } #=> 0
|
53
53
|
|
54
54
|
== REQUIREMENTS:
|
55
55
|
|
@@ -63,7 +63,7 @@ Finally, the grid search methods
|
|
63
63
|
|
64
64
|
(The MIT License)
|
65
65
|
|
66
|
-
Copyright (c) 2006-
|
66
|
+
Copyright (c) 2006-2012 Adriano Mitre <adriano.mitre@gmail.com>
|
67
67
|
|
68
68
|
Permission is hereby granted, free of charge, to any person obtaining
|
69
69
|
a copy of this software and associated documentation files (the
|
data/lib/cartesian.rb
CHANGED
@@ -39,7 +39,7 @@ module Cartesian
|
|
39
39
|
# Unfortunately, as of now, the version data must be replicated in ../cartesian.rb,
|
40
40
|
# due to a mix of newgem versions, each requiring a different one. Not DRY :P
|
41
41
|
#
|
42
|
-
VERSION = "0.6.
|
42
|
+
VERSION = "0.6.6"
|
43
43
|
|
44
44
|
# Produces the cartesian product of self and other.
|
45
45
|
# The result is an array of pairs (i.e. two-element arrays).
|
data/lib/iterable.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Iterable
|
2
|
+
def restart
|
3
|
+
@next_index = -1
|
4
|
+
self
|
5
|
+
end
|
6
|
+
|
7
|
+
def next
|
8
|
+
restart unless defined? @next_index
|
9
|
+
raw_next
|
10
|
+
end
|
11
|
+
|
12
|
+
def raw_next
|
13
|
+
raise RangeError, 'there is no next element, please restart' if done?
|
14
|
+
self[@next_index += 1]
|
15
|
+
end
|
16
|
+
|
17
|
+
def restart_and_raw_next
|
18
|
+
self[@next_index = 0]
|
19
|
+
end
|
20
|
+
|
21
|
+
# TODO: consider a module inclusion time solution to "count rescue size", for performance sake
|
22
|
+
def done?
|
23
|
+
@next_index && (@next_index == (count rescue size)-1)
|
24
|
+
end
|
25
|
+
end
|
@@ -201,13 +201,13 @@
|
|
201
201
|
<div class="method-source-code"
|
202
202
|
id="new-source">
|
203
203
|
<pre>
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
204
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 9</span>
|
205
|
+
9: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">foo</span>, <span class="ruby-identifier">bar</span>)
|
206
|
+
10: <span class="ruby-ivar">@lists</span> = []
|
207
|
+
11: <span class="ruby-ivar">@tot_iter</span> = <span class="ruby-value">1</span>
|
208
|
+
12: <span class="ruby-identifier">product!</span>(<span class="ruby-identifier">foo</span>)
|
209
|
+
13: <span class="ruby-identifier">product!</span>(<span class="ruby-identifier">bar</span>)
|
210
|
+
14: <span class="ruby-keyword kw">end</span></pre>
|
211
211
|
</div>
|
212
212
|
|
213
213
|
</div>
|
@@ -273,10 +273,10 @@
|
|
273
273
|
<div class="method-source-code"
|
274
274
|
id="dup-source">
|
275
275
|
<pre>
|
276
|
-
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line
|
277
|
-
|
278
|
-
|
279
|
-
|
276
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 16</span>
|
277
|
+
16: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dup</span>
|
278
|
+
17: <span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">Marshal</span>.<span class="ruby-identifier">dump</span>(<span class="ruby-keyword kw">self</span>))
|
279
|
+
18: <span class="ruby-keyword kw">end</span></pre>
|
280
280
|
</div>
|
281
281
|
|
282
282
|
</div>
|
@@ -307,31 +307,32 @@
|
|
307
307
|
<div class="method-source-code"
|
308
308
|
id="each-source">
|
309
309
|
<pre>
|
310
|
-
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line
|
311
|
-
|
312
|
-
|
313
|
-
50:
|
314
|
-
51: <span class="ruby-identifier">elems</span> = []
|
315
|
-
52: <span class="ruby-keyword kw">for</span> <span class="ruby-identifier">list</span> <span class="ruby-keyword kw">in</span> <span class="ruby-ivar">@lists</span>
|
316
|
-
53: <span class="ruby-identifier">elems</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">list</span>.<span class="ruby-identifier">restart_and_raw_next</span>
|
317
|
-
54: <span class="ruby-keyword kw">end</span>
|
318
|
-
55: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator"><=</span> <span class="ruby-value str">'1.9.1'</span>; <span class="ruby-keyword kw">yield</span>(*<span class="ruby-identifier">elems</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span> }); <span class="ruby-keyword kw">else</span>; <span class="ruby-keyword kw">yield</span>(*<span class="ruby-identifier">elems</span>); <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># Yeah, v.map{|x|x} should be equal to v, but strangely it is NOT in Ruby versions prior to 1.9.2.</span>
|
310
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 54</span>
|
311
|
+
54: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
|
312
|
+
55: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tot_iter</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span>
|
319
313
|
56:
|
320
|
-
57: <span class="ruby-identifier">
|
321
|
-
58: <span class="ruby-
|
322
|
-
59:
|
323
|
-
60:
|
324
|
-
61:
|
325
|
-
62:
|
326
|
-
63:
|
327
|
-
64:
|
328
|
-
65:
|
329
|
-
66:
|
330
|
-
67:
|
331
|
-
68: <span class="ruby-keyword kw">
|
332
|
-
69:
|
333
|
-
70:
|
334
|
-
71:
|
314
|
+
57: <span class="ruby-identifier">elems</span> = []
|
315
|
+
58: <span class="ruby-keyword kw">for</span> <span class="ruby-identifier">list</span> <span class="ruby-keyword kw">in</span> <span class="ruby-ivar">@lists</span>
|
316
|
+
59: <span class="ruby-identifier">elems</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">list</span>.<span class="ruby-identifier">restart_and_raw_next</span>
|
317
|
+
60: <span class="ruby-keyword kw">end</span>
|
318
|
+
61: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator"><=</span> <span class="ruby-value str">'1.9.1'</span>; <span class="ruby-keyword kw">yield</span>(*<span class="ruby-identifier">elems</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span> }); <span class="ruby-keyword kw">else</span>; <span class="ruby-keyword kw">yield</span>(*<span class="ruby-identifier">elems</span>); <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># Yeah, v.map{|x|x} should be equal to v, but strangely it is NOT in Ruby versions prior to 1.9.2.</span>
|
319
|
+
62:
|
320
|
+
63: <span class="ruby-identifier">last_list_index</span> = <span class="ruby-ivar">@lists</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
|
321
|
+
64: <span class="ruby-identifier">n</span> = <span class="ruby-identifier">last_list_index</span>
|
322
|
+
65: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
323
|
+
66: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@lists</span>[<span class="ruby-identifier">n</span>].<span class="ruby-identifier">done?</span>
|
324
|
+
67: <span class="ruby-identifier">elems</span>[<span class="ruby-identifier">n</span>] = <span class="ruby-ivar">@lists</span>[<span class="ruby-identifier">n</span>].<span class="ruby-identifier">raw_next</span>
|
325
|
+
68: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator"><=</span> <span class="ruby-value str">'1.9.1'</span>; <span class="ruby-keyword kw">yield</span>(*<span class="ruby-identifier">elems</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span> }); <span class="ruby-keyword kw">else</span>; <span class="ruby-keyword kw">yield</span>(*<span class="ruby-identifier">elems</span>); <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># See previous comment.</span>
|
326
|
+
69: <span class="ruby-identifier">n</span> = <span class="ruby-identifier">last_list_index</span>
|
327
|
+
70: <span class="ruby-keyword kw">next</span>
|
328
|
+
71: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">n</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
329
|
+
72: <span class="ruby-identifier">elems</span>[<span class="ruby-identifier">n</span>] = <span class="ruby-ivar">@lists</span>[<span class="ruby-identifier">n</span>].<span class="ruby-identifier">restart_and_raw_next</span>
|
330
|
+
73: <span class="ruby-identifier">n</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
331
|
+
74: <span class="ruby-keyword kw">else</span>
|
332
|
+
75: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
333
|
+
76: <span class="ruby-keyword kw">end</span>
|
334
|
+
77: <span class="ruby-keyword kw">end</span>
|
335
|
+
78: <span class="ruby-keyword kw">end</span></pre>
|
335
336
|
</div>
|
336
337
|
|
337
338
|
</div>
|
@@ -362,13 +363,13 @@
|
|
362
363
|
<div class="method-source-code"
|
363
364
|
id="equal-source">
|
364
365
|
<pre>
|
365
|
-
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
366
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 20</span>
|
367
|
+
20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">equal</span>(<span class="ruby-identifier">other</span>)
|
368
|
+
21: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var_name</span><span class="ruby-operator">|</span>
|
369
|
+
22: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">var_name</span>) <span class="ruby-operator">!=</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">var_name</span>)
|
370
|
+
23: <span class="ruby-keyword kw">end</span>
|
371
|
+
24: <span class="ruby-keyword kw">true</span>
|
372
|
+
25: <span class="ruby-keyword kw">end</span></pre>
|
372
373
|
</div>
|
373
374
|
|
374
375
|
</div>
|
@@ -403,11 +404,11 @@
|
|
403
404
|
<div class="method-source-code"
|
404
405
|
id="left-product-source">
|
405
406
|
<pre>
|
406
|
-
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
407
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 49</span>
|
408
|
+
49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">left_product</span>(<span class="ruby-identifier">other</span>)
|
409
|
+
50: (<span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>).<span class="ruby-identifier">left_product!</span>(<span class="ruby-identifier">other</span>)
|
410
|
+
51: <span class="ruby-identifier">result</span>
|
411
|
+
52: <span class="ruby-keyword kw">end</span></pre>
|
411
412
|
</div>
|
412
413
|
|
413
414
|
</div>
|
@@ -438,12 +439,12 @@
|
|
438
439
|
<div class="method-source-code"
|
439
440
|
id="left-product--source">
|
440
441
|
<pre>
|
441
|
-
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
442
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 36</span>
|
443
|
+
36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">left_product!</span>(<span class="ruby-identifier">other</span>)
|
444
|
+
37: <span class="ruby-ivar">@lists</span>.<span class="ruby-identifier">unshift</span> <span class="ruby-constant">Array</span>(<span class="ruby-identifier">other</span>).<span class="ruby-identifier">dup</span>
|
445
|
+
38: <span class="ruby-ivar">@tot_iter</span> <span class="ruby-operator">*=</span> <span class="ruby-ivar">@lists</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">size</span>
|
446
|
+
39: <span class="ruby-keyword kw">self</span>
|
447
|
+
40: <span class="ruby-keyword kw">end</span></pre>
|
447
448
|
</div>
|
448
449
|
|
449
450
|
</div>
|
@@ -474,11 +475,11 @@
|
|
474
475
|
<div class="method-source-code"
|
475
476
|
id="product-source">
|
476
477
|
<pre>
|
477
|
-
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
478
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 42</span>
|
479
|
+
42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">product</span>(<span class="ruby-identifier">other</span>)
|
480
|
+
43: (<span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">dup</span>).<span class="ruby-identifier">product!</span>(<span class="ruby-identifier">other</span>)
|
481
|
+
44: <span class="ruby-identifier">result</span>
|
482
|
+
45: <span class="ruby-keyword kw">end</span></pre>
|
482
483
|
</div>
|
483
484
|
|
484
485
|
</div>
|
@@ -513,12 +514,12 @@
|
|
513
514
|
<div class="method-source-code"
|
514
515
|
id="product--source">
|
515
516
|
<pre>
|
516
|
-
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
517
|
+
<span class="ruby-comment cmt"># File lib/cartesian_iterator.rb, line 28</span>
|
518
|
+
28: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">product!</span>(<span class="ruby-identifier">other</span>)
|
519
|
+
29: <span class="ruby-ivar">@lists</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Array</span>(<span class="ruby-identifier">other</span>).<span class="ruby-identifier">dup</span>
|
520
|
+
30: <span class="ruby-ivar">@tot_iter</span> <span class="ruby-operator">*=</span> <span class="ruby-ivar">@lists</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">size</span>
|
521
|
+
31: <span class="ruby-keyword kw">self</span>
|
522
|
+
32: <span class="ruby-keyword kw">end</span></pre>
|
522
523
|
</div>
|
523
524
|
|
524
525
|
</div>
|
data/website/doc/Iterable.html
CHANGED
@@ -38,8 +38,8 @@
|
|
38
38
|
<div class="section-body">
|
39
39
|
<ul>
|
40
40
|
|
41
|
-
<li><a href="./lib/
|
42
|
-
class="thickbox" title="lib/
|
41
|
+
<li><a href="./lib/iterable_rb.html?TB_iframe=true&height=550&width=785"
|
42
|
+
class="thickbox" title="lib/iterable.rb">lib/iterable.rb</a></li>
|
43
43
|
|
44
44
|
</ul>
|
45
45
|
</div>
|
@@ -62,6 +62,8 @@
|
|
62
62
|
<h3 class="section-header">Methods</h3>
|
63
63
|
<ul class="link-list">
|
64
64
|
|
65
|
+
<li><a href="#method-i-done%3F">#done?</a></li>
|
66
|
+
|
65
67
|
<li><a href="#method-i-next">#next</a></li>
|
66
68
|
|
67
69
|
<li><a href="#method-i-raw_next">#raw_next</a></li>
|
@@ -145,6 +147,43 @@
|
|
145
147
|
<h3 class="section-header">Public Instance Methods</h3>
|
146
148
|
|
147
149
|
|
150
|
+
<div id="done--method" class="method-detail ">
|
151
|
+
<a name="method-i-done%3F"></a>
|
152
|
+
|
153
|
+
<div class="method-heading">
|
154
|
+
|
155
|
+
<span class="method-name">done?</span><span
|
156
|
+
class="method-args">()</span>
|
157
|
+
<span class="method-click-advice">click to toggle source</span>
|
158
|
+
|
159
|
+
</div>
|
160
|
+
|
161
|
+
<div class="method-description">
|
162
|
+
|
163
|
+
<p>
|
164
|
+
TODO: consider a module inclusion time solution to “count rescue
|
165
|
+
size”, for performance sake
|
166
|
+
</p>
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
<div class="method-source-code"
|
171
|
+
id="done--source">
|
172
|
+
<pre>
|
173
|
+
<span class="ruby-comment cmt"># File lib/iterable.rb, line 22</span>
|
174
|
+
22: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">done?</span>
|
175
|
+
23: <span class="ruby-ivar">@next_index</span> <span class="ruby-operator">&&</span> (<span class="ruby-ivar">@next_index</span> <span class="ruby-operator">==</span> (<span class="ruby-identifier">count</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-identifier">size</span>)<span class="ruby-operator">-</span><span class="ruby-value">1</span>)
|
176
|
+
24: <span class="ruby-keyword kw">end</span></pre>
|
177
|
+
</div>
|
178
|
+
|
179
|
+
</div>
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
</div>
|
185
|
+
|
186
|
+
|
148
187
|
<div id="next-method" class="method-detail ">
|
149
188
|
<a name="method-i-next"></a>
|
150
189
|
|
@@ -165,11 +204,11 @@
|
|
165
204
|
<div class="method-source-code"
|
166
205
|
id="next-source">
|
167
206
|
<pre>
|
168
|
-
<span class="ruby-comment cmt"># File lib/
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
207
|
+
<span class="ruby-comment cmt"># File lib/iterable.rb, line 7</span>
|
208
|
+
7: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">next</span>
|
209
|
+
8: <span class="ruby-identifier">restart</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span> <span class="ruby-ivar">@next_index</span>
|
210
|
+
9: <span class="ruby-identifier">raw_next</span>
|
211
|
+
10: <span class="ruby-keyword kw">end</span></pre>
|
173
212
|
</div>
|
174
213
|
|
175
214
|
</div>
|
@@ -200,10 +239,11 @@
|
|
200
239
|
<div class="method-source-code"
|
201
240
|
id="raw-next-source">
|
202
241
|
<pre>
|
203
|
-
<span class="ruby-comment cmt"># File lib/
|
204
|
-
|
205
|
-
|
206
|
-
|
242
|
+
<span class="ruby-comment cmt"># File lib/iterable.rb, line 12</span>
|
243
|
+
12: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">raw_next</span>
|
244
|
+
13: <span class="ruby-identifier">raise</span> <span class="ruby-constant">RangeError</span>, <span class="ruby-value str">'there is no next element, please restart'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">done?</span>
|
245
|
+
14: <span class="ruby-keyword kw">self</span>[<span class="ruby-ivar">@next_index</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>]
|
246
|
+
15: <span class="ruby-keyword kw">end</span></pre>
|
207
247
|
</div>
|
208
248
|
|
209
249
|
</div>
|
@@ -234,11 +274,11 @@
|
|
234
274
|
<div class="method-source-code"
|
235
275
|
id="restart-source">
|
236
276
|
<pre>
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
277
|
+
<span class="ruby-comment cmt"># File lib/iterable.rb, line 2</span>
|
278
|
+
2: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restart</span>
|
279
|
+
3: <span class="ruby-ivar">@next_index</span> = <span class="ruby-value">1</span>
|
280
|
+
4: <span class="ruby-keyword kw">self</span>
|
281
|
+
5: <span class="ruby-keyword kw">end</span></pre>
|
242
282
|
</div>
|
243
283
|
|
244
284
|
</div>
|
@@ -269,10 +309,10 @@
|
|
269
309
|
<div class="method-source-code"
|
270
310
|
id="restart-and-raw-next-source">
|
271
311
|
<pre>
|
272
|
-
<span class="ruby-comment cmt"># File lib/
|
273
|
-
|
274
|
-
|
275
|
-
|
312
|
+
<span class="ruby-comment cmt"># File lib/iterable.rb, line 17</span>
|
313
|
+
17: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restart_and_raw_next</span>
|
314
|
+
18: <span class="ruby-keyword kw">self</span>[<span class="ruby-ivar">@next_index</span> = <span class="ruby-value">0</span>]
|
315
|
+
19: <span class="ruby-keyword kw">end</span></pre>
|
276
316
|
</div>
|
277
317
|
|
278
318
|
</div>
|
@@ -183,7 +183,7 @@ sudo gem install cartesian
|
|
183
183
|
(The MIT License)
|
184
184
|
</p>
|
185
185
|
<p>
|
186
|
-
Copyright © 2006-
|
186
|
+
Copyright © 2006-2012 Adriano Mitre <adriano.mitre@gmail.com>
|
187
187
|
</p>
|
188
188
|
<p>
|
189
189
|
Permission is hereby granted, free of charge, to any person obtaining a
|
data/website/doc/created.rid
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
README.rdoc
|
3
|
-
lib/cartesian.rb
|
4
|
-
lib/cartesian_iterator.rb
|
5
|
-
lib/grid_search.rb
|
1
|
+
Sun, 15 Apr 2012 03:34:04 -0300
|
2
|
+
README.rdoc Sun, 15 Apr 2012 03:31:27 -0300
|
3
|
+
lib/cartesian.rb Sun, 15 Apr 2012 03:31:27 -0300
|
4
|
+
lib/cartesian_iterator.rb Sun, 15 Apr 2012 03:31:27 -0300
|
5
|
+
lib/grid_search.rb Sun, 15 Apr 2012 03:31:27 -0300
|
6
|
+
lib/iterable.rb Sun, 15 Apr 2012 03:31:27 -0300
|
data/website/doc/index.html
CHANGED
@@ -73,6 +73,8 @@
|
|
73
73
|
|
74
74
|
<li><a href="Cartesian.html#method-i-cartesian">#cartesian — Cartesian</a></li>
|
75
75
|
|
76
|
+
<li><a href="Iterable.html#method-i-done%3F">#done? — Iterable</a></li>
|
77
|
+
|
76
78
|
<li><a href="CartesianIterator.html#method-i-dup">#dup — CartesianIterator</a></li>
|
77
79
|
|
78
80
|
<li><a href="CartesianIterator.html#method-i-each">#each — CartesianIterator</a></li>
|
@@ -24,13 +24,15 @@
|
|
24
24
|
<div id="metadata">
|
25
25
|
<dl>
|
26
26
|
<dt class="modified-date">Last Modified</dt>
|
27
|
-
<dd class="modified-date">
|
27
|
+
<dd class="modified-date">2012-04-15 03:31:27 -0300</dd>
|
28
28
|
|
29
29
|
|
30
30
|
<dt class="requires">Requires</dt>
|
31
31
|
<dd class="requires">
|
32
32
|
<ul>
|
33
33
|
|
34
|
+
<li>iterable</li>
|
35
|
+
|
34
36
|
</ul>
|
35
37
|
</dd>
|
36
38
|
|
data/website/index.html
CHANGED
@@ -1,128 +1,5 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
7
|
-
<title>
|
8
|
-
|
9
|
-
</title>
|
10
|
-
<script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
|
11
|
-
<style>
|
12
1
|
|
13
|
-
</style>
|
14
|
-
<script type="text/javascript">
|
15
|
-
window.onload = function() {
|
16
|
-
settings = {
|
17
|
-
tl: { radius: 10 },
|
18
|
-
tr: { radius: 10 },
|
19
|
-
bl: { radius: 10 },
|
20
|
-
br: { radius: 10 },
|
21
|
-
antiAlias: true,
|
22
|
-
autoPad: true,
|
23
|
-
validTags: ["div"]
|
24
|
-
}
|
25
|
-
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
26
|
-
versionBox.applyCornersToAll();
|
27
|
-
}
|
28
|
-
</script>
|
29
|
-
</head>
|
30
|
-
<body>
|
31
|
-
<div id="main">
|
32
2
|
|
33
|
-
|
34
|
-
|
35
|
-
<p>Get Version</p>
|
36
|
-
<a href="http://github.com/adrianomitre/cartesian" class="numbers">0.6.4</a>
|
37
|
-
</div>
|
38
|
-
<script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script><h1>cartesian</h1>
|
39
|
-
<h3>Cartesian products in Ruby</h3>
|
40
|
-
<h2>What</h2>
|
41
|
-
<p>Provides methods for the calculation of the cartesian producted between<br />
|
42
|
-
two or more enumerable objects. Includes grid search optimization methods.<br />
|
43
|
-
It can also be easily and conveniently mixed-in into any enumerable class.</p>
|
44
|
-
<h2>Installing</h2>
|
45
|
-
<p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">cartesian</span></pre></p>
|
46
|
-
<h2>The basics</h2>
|
47
|
-
<p><pre class='syntax'><span class="constant">Cartesian</span><span class="punct">::</span><span class="ident">product</span> <span class="punct">[</span><span class="number">1</span><span class="punct">,</span><span class="number">2</span><span class="punct">],[</span><span class="number">3</span><span class="punct">,</span><span class="number">4</span><span class="punct">]</span> <span class="comment">#=> [[1, 3], [1, 4], [2, 3], [2, 4]]</span></pre></p>
|
48
|
-
<h2>Demonstration of usage</h2>
|
49
|
-
<p>One can use the Cartesian module directly<br />
|
50
|
-
<pre class='syntax'>
|
51
|
-
<span class="ident">require</span> <span class="punct">'</span><span class="string">cartesian</span><span class="punct">'</span>
|
52
|
-
<span class="ident">foo</span> <span class="punct">=</span> <span class="punct">[</span><span class="number">1</span><span class="punct">,</span> <span class="number">2</span><span class="punct">]</span>
|
53
|
-
<span class="ident">bar</span> <span class="punct">=</span> <span class="punct">["</span><span class="string">a</span><span class="punct">",</span> <span class="punct">"</span><span class="string">b</span><span class="punct">"]</span>
|
54
|
-
<span class="constant">Cartesian</span><span class="punct">::</span><span class="ident">product</span><span class="punct">(</span><span class="ident">foo</span><span class="punct">,</span> <span class="ident">bar</span><span class="punct">)</span> <span class="comment">#=> [[1, "a"], [1, "b"], [2, "a"], [2, "b"]]</span>
|
55
|
-
</pre></p>
|
56
|
-
<p>or use the methods provided by the mixin in the Array class</p>
|
57
|
-
<p><pre class='syntax'>
|
58
|
-
<span class="ident">foo</span><span class="punct">.</span><span class="ident">cartesian</span><span class="punct">(</span><span class="ident">bar</span><span class="punct">)</span> <span class="comment">#=> [[1, "a"], [1, "b"], [2, "a"], [2, "b"]]</span>
|
59
|
-
</pre></p>
|
60
|
-
<p>which include the short’n’sweet <em>x</em> method</p>
|
61
|
-
<p><pre class='syntax'>
|
62
|
-
<span class="ident">v</span> <span class="punct">=</span> <span class="punct">[]</span> <span class="comment">#=> []</span>
|
63
|
-
<span class="keyword">for</span> <span class="ident">a</span><span class="punct">,</span> <span class="ident">b</span> <span class="keyword">in</span> <span class="punct">[</span><span class="number">1</span><span class="punct">,</span><span class="number">2</span><span class="punct">].</span><span class="ident">x</span> <span class="punct">[</span><span class="number">3</span><span class="punct">,</span><span class="number">4</span><span class="punct">]</span>
|
64
|
-
<span class="ident">v</span> <span class="punct"><<</span> <span class="punct">[</span><span class="ident">a</span><span class="punct">,</span><span class="ident">b</span><span class="punct">]</span>
|
65
|
-
<span class="keyword">end</span> <span class="comment">#=> true</span>
|
66
|
-
<span class="ident">v</span> <span class="comment">#=> [[1, 3], [1, 4], [2, 3], [2, 4]]</span>
|
67
|
-
</pre></p>
|
68
|
-
<p>The ‘**’ operator provides a convenient way of iterating multi-dimensionally over the same array or range</p>
|
69
|
-
<p><pre class='syntax'>
|
70
|
-
<span class="ident">u</span> <span class="punct">=</span> <span class="punct">[</span><span class="number">0</span><span class="punct">,</span> <span class="number">1</span><span class="punct">]**</span><span class="number">3</span> <span class="comment">#=> #<CartesianIterator:0x7f2fb8e54978 @tot_iter=8, \</span>
|
71
|
-
<span class="comment"># @lists=[[0, 1], [0, 1], [0, 1]]></span>
|
72
|
-
<span class="ident">u</span><span class="punct">.</span><span class="ident">to_a</span> <span class="comment">#=> [[0, 0, 0], [0, 0, 1], [0, 1, 0], \</span>
|
73
|
-
<span class="comment"># [0, 1, 1], [1, 0, 0], [1, 0, 1], \</span>
|
74
|
-
<span class="comment"># [1, 1, 0], [1, 1, 1]]</span>
|
75
|
-
</pre></p>
|
76
|
-
<p>Finally, the grid search methods</p>
|
77
|
-
<p><pre class='syntax'>
|
78
|
-
<span class="ident">require</span> <span class="punct">'</span><span class="string">grid_search</span><span class="punct">'</span>
|
79
|
-
<span class="punct">[-</span><span class="number">1</span><span class="punct">,</span> <span class="number">0</span><span class="punct">,</span> <span class="number">1</span><span class="punct">,</span> <span class="number">2</span><span class="punct">].</span><span class="ident">argmax</span> <span class="punct">{|</span><span class="ident">x</span><span class="punct">|</span> <span class="ident">x</span><span class="punct">**</span><span class="number">2</span> <span class="punct">}</span> <span class="comment">#=> 2</span>
|
80
|
-
<span class="punct">[-</span><span class="number">1</span><span class="punct">,</span> <span class="number">0</span><span class="punct">,</span> <span class="number">1</span><span class="punct">,</span> <span class="number">2</span><span class="punct">].</span><span class="ident">argmin</span> <span class="punct">{|</span><span class="ident">x</span><span class="punct">|</span> <span class="ident">x</span><span class="punct">.</span><span class="ident">abs</span> <span class="punct">}</span> <span class="comment">#=> 0</span></pre><br />
|
81
|
-
</pre></p>
|
82
|
-
<p>For more examples and details, see the RDoc-generated documentation <a href="doc/index.html">here</a>.</p>
|
83
|
-
<h2>How to submit patches</h2>
|
84
|
-
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
|
85
|
-
<p>You can fetch the source from:</p>
|
86
|
-
<ul>
|
87
|
-
<li>github: <a href="http://github.com/adrianomitre/cartesian/tree/master">http://github.com/adrianomitre/cartesian/tree/master</a></li>
|
88
|
-
</ul>
|
89
|
-
<pre>git clone git@github.com:adrianomitre/cartesian.git</pre>
|
90
|
-
<h3>Build and test instructions</h3>
|
91
|
-
<pre>cd cartesian
|
92
|
-
rake test
|
93
|
-
rake install_gem</pre>
|
94
|
-
<h2>License</h2>
|
95
|
-
<p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
|
96
|
-
<h2>Contact</h2>
|
97
|
-
<p>Comments are welcome. Send an email to <a href="mailto:adriano.mitre@gmail.com">Adriano Mitre</a>.</p>
|
98
|
-
<div align=right>
|
99
|
-
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
100
|
-
<input type="hidden" name="cmd" value="_s-xclick">
|
101
|
-
<input type="hidden" name="hosted_button_id" value="9ABWULT73Y7AC">
|
102
|
-
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
103
|
-
<p><img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"></p>
|
104
|
-
</form>
|
105
|
-
</div>
|
106
|
-
<p class="coda">
|
107
|
-
<a href="http://github.com/adrianomitre">Adriano Mitre</a>, 7th January 2011<br>
|
108
|
-
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
109
|
-
</p>
|
110
|
-
</div>
|
3
|
+
Generating the website requires the newgem RubyGem
|
4
|
+
Install: gem install newgem
|
111
5
|
|
112
|
-
<!-- insert site tracking codes here, like Google Urchin -->
|
113
|
-
<script type="text/javascript">
|
114
|
-
|
115
|
-
var _gaq = _gaq || [];
|
116
|
-
_gaq.push(['_setAccount', 'UA-20605454-1']);
|
117
|
-
_gaq.push(['_trackPageview']);
|
118
|
-
|
119
|
-
(function() {
|
120
|
-
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
121
|
-
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
122
|
-
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
123
|
-
})();
|
124
|
-
|
125
|
-
</script>
|
126
|
-
|
127
|
-
</body>
|
128
|
-
</html>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cartesian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '3.10'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: newgem
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.5.3
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.5.3
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: hoe
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,6 +92,7 @@ files:
|
|
76
92
|
- lib/cartesian/version.rb
|
77
93
|
- lib/cartesian_iterator.rb
|
78
94
|
- lib/grid_search.rb
|
95
|
+
- lib/iterable.rb
|
79
96
|
- script/console
|
80
97
|
- script/destroy
|
81
98
|
- script/generate
|
@@ -87,6 +104,7 @@ files:
|
|
87
104
|
- test/test_extensions.rb
|
88
105
|
- test/test_grid_search.rb
|
89
106
|
- test/test_helper.rb
|
107
|
+
- test/test_iterable.rb
|
90
108
|
- test/test_suite.rb
|
91
109
|
- website/doc/Array.html
|
92
110
|
- website/doc/Cartesian.html
|
@@ -106,7 +124,6 @@ files:
|
|
106
124
|
- website/javascripts/rounded_corners_lite.inc.js
|
107
125
|
- website/stylesheets/screen.css
|
108
126
|
- website/template.html.erb
|
109
|
-
- test/test_iterable.rb
|
110
127
|
- .gemtest
|
111
128
|
homepage: http://adrianomitre.github.com/cartesian/website/index.html
|
112
129
|
licenses: []
|