ruby-nuggets 0.8.9 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +7 -0
  2. data/README +3 -3
  3. data/Rakefile +1 -1
  4. data/lib/nuggets/all.rb +1 -1
  5. data/lib/nuggets/all_mixins.rb +1 -1
  6. data/lib/nuggets/array/boost.rb +5 -0
  7. data/lib/nuggets/array/boost_mixin.rb +78 -0
  8. data/lib/nuggets/array/combination.rb +1 -1
  9. data/lib/nuggets/array/correlation_mixin.rb +2 -2
  10. data/lib/nuggets/array/flatten_once.rb +1 -1
  11. data/lib/nuggets/array/format.rb +1 -1
  12. data/lib/nuggets/array/histogram_mixin.rb +1 -1
  13. data/lib/nuggets/array/in_order.rb +1 -1
  14. data/lib/nuggets/array/limit_mixin.rb +1 -1
  15. data/lib/nuggets/array/mean_mixin.rb +1 -1
  16. data/lib/nuggets/array/median_mixin.rb +1 -1
  17. data/lib/nuggets/array/mode_mixin.rb +1 -1
  18. data/lib/nuggets/array/monotone.rb +1 -1
  19. data/lib/nuggets/array/only.rb +1 -1
  20. data/lib/nuggets/array/rand.rb +1 -1
  21. data/lib/nuggets/array/regression_mixin.rb +100 -20
  22. data/lib/nuggets/array/runiq_mixin.rb +1 -1
  23. data/lib/nuggets/array/shuffle.rb +1 -1
  24. data/lib/nuggets/array/standard_deviation_mixin.rb +1 -1
  25. data/lib/nuggets/array/to_hash.rb +1 -1
  26. data/lib/nuggets/array/variance_mixin.rb +2 -2
  27. data/lib/nuggets/enumerable/agrep.rb +1 -1
  28. data/lib/nuggets/enumerable/all_any_extended.rb +1 -1
  29. data/lib/nuggets/enumerable/minmax.rb +1 -1
  30. data/lib/nuggets/env/set_mixin.rb +1 -1
  31. data/lib/nuggets/env/user_encoding_mixin.rb +1 -1
  32. data/lib/nuggets/env/user_home_mixin.rb +1 -1
  33. data/lib/nuggets/file/ext_mixin.rb +1 -1
  34. data/lib/nuggets/file/replace_mixin.rb +1 -1
  35. data/lib/nuggets/file/sub_mixin.rb +1 -1
  36. data/lib/nuggets/file/which_mixin.rb +1 -1
  37. data/lib/nuggets/hash/at.rb +1 -1
  38. data/lib/nuggets/hash/deep_merge_mixin.rb +1 -1
  39. data/lib/nuggets/hash/in_order.rb +1 -1
  40. data/lib/nuggets/hash/insert.rb +1 -1
  41. data/lib/nuggets/hash/nest_mixin.rb +1 -1
  42. data/lib/nuggets/hash/only.rb +1 -1
  43. data/lib/nuggets/hash/seen.rb +5 -0
  44. data/lib/nuggets/hash/seen_mixin.rb +59 -0
  45. data/lib/nuggets/hash/unroll_mixin.rb +1 -1
  46. data/lib/nuggets/integer/factorial.rb +1 -1
  47. data/lib/nuggets/integer/length_mixin.rb +1 -1
  48. data/lib/nuggets/integer/map_mixin.rb +1 -1
  49. data/lib/nuggets/integer/to_binary_s.rb +1 -1
  50. data/lib/nuggets/io/agrep.rb +1 -1
  51. data/lib/nuggets/io/interact_mixin.rb +1 -1
  52. data/lib/nuggets/io/modes.rb +1 -1
  53. data/lib/nuggets/io/null_mixin.rb +1 -1
  54. data/lib/nuggets/io/redirect_mixin.rb +1 -1
  55. data/lib/nuggets/net/success.rb +1 -1
  56. data/lib/nuggets/numeric/duration.rb +1 -1
  57. data/lib/nuggets/numeric/limit.rb +1 -1
  58. data/lib/nuggets/numeric/signum.rb +1 -1
  59. data/lib/nuggets/numeric/to_multiple.rb +1 -1
  60. data/lib/nuggets/object/blank_mixin.rb +1 -1
  61. data/lib/nuggets/object/boolean_mixin.rb +1 -1
  62. data/lib/nuggets/object/msend_mixin.rb +1 -1
  63. data/lib/nuggets/object/silence_mixin.rb +1 -1
  64. data/lib/nuggets/object/singleton_class_mixin.rb +1 -1
  65. data/lib/nuggets/proc/bind_mixin.rb +1 -1
  66. data/lib/nuggets/range/quantile_mixin.rb +1 -1
  67. data/lib/nuggets/statistics.rb +1 -0
  68. data/lib/nuggets/statistics_mixins.rb +1 -0
  69. data/lib/nuggets/string/camelscore_mixin.rb +1 -1
  70. data/lib/nuggets/string/capitalize_first.rb +1 -1
  71. data/lib/nuggets/string/case.rb +1 -1
  72. data/lib/nuggets/string/evaluate_mixin.rb +1 -1
  73. data/lib/nuggets/string/msub.rb +1 -1
  74. data/lib/nuggets/string/nsub.rb +1 -1
  75. data/lib/nuggets/string/sub_with_md.rb +1 -1
  76. data/lib/nuggets/string/wc_mixin.rb +1 -1
  77. data/lib/nuggets/string/word_wrap.rb +1 -1
  78. data/lib/nuggets/string/xor_mixin.rb +1 -1
  79. data/lib/nuggets/tempfile/open.rb +1 -1
  80. data/lib/nuggets/uri/content_type_mixin.rb +1 -1
  81. data/lib/nuggets/uri/exist_mixin.rb +1 -1
  82. data/lib/nuggets/uri/redirect_mixin.rb +1 -1
  83. data/lib/nuggets/util/ansicolor2css.rb +1 -1
  84. data/lib/nuggets/util/cli.rb +1 -1
  85. data/lib/nuggets/util/content_type.rb +1 -1
  86. data/lib/nuggets/util/dotted_decimal.rb +1 -1
  87. data/lib/nuggets/util/i18n.rb +1 -1
  88. data/lib/nuggets/util/lazy_attr.rb +1 -1
  89. data/lib/nuggets/util/log_parser/apache.rb +1 -1
  90. data/lib/nuggets/util/log_parser/rails.rb +1 -1
  91. data/lib/nuggets/util/log_parser.rb +1 -1
  92. data/lib/nuggets/util/mysql.rb +209 -0
  93. data/lib/nuggets/util/pluggable.rb +1 -1
  94. data/lib/nuggets/util/ruby.rb +1 -1
  95. data/lib/nuggets/version.rb +2 -2
  96. data/lib/nuggets.rb +1 -1
  97. data/spec/nuggets/array/boost_spec.rb +52 -0
  98. data/spec/nuggets/array/regression_spec.rb +16 -0
  99. data/spec/nuggets/hash/seen_spec.rb +38 -0
  100. data/spec/spec_helper.rb +3 -0
  101. metadata +155 -150
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c05c33666a38a6baa993e4efe6dbafc67e657837
4
+ data.tar.gz: 857e2ccfae07f7907292c943fcf74fea25d90a8f
5
+ SHA512:
6
+ metadata.gz: fd5a08ccad8c5e1a72f45bf133d4bc57bc028a95d3a272119dbff59a5097a08a345e4cb3989409dfe0b91425a505d909056d30b23382d2fb5962593e90730ff8
7
+ data.tar.gz: 388c24087544ad117694982d5c420e97c60ae5a03ea1e39c880eeab88a6750145fee73df98c4d86d3a6caeaf108b97fbbdec64fbc1e126bd5a4251985f1038cf
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to ruby-nuggets version 0.8.8
5
+ This documentation refers to ruby-nuggets version 0.9.0
6
6
 
7
7
 
8
8
  == DESCRIPTION
@@ -42,12 +42,12 @@ RubyGem:: http://rubygems.org/gems/ruby-nuggets
42
42
 
43
43
  == AUTHORS
44
44
 
45
- * Jens Wille <mailto:jens.wille@uni-koeln.de>
45
+ * Jens Wille <mailto:jens.wille@gmail.com>
46
46
 
47
47
 
48
48
  == LICENSE AND COPYRIGHT
49
49
 
50
- Copyright (C) 2007-2012 Jens Wille
50
+ Copyright (C) 2007-2013 Jens Wille
51
51
 
52
52
  ruby-nuggets is free software: you can redistribute it and/or modify it under
53
53
  the terms of the GNU Affero General Public License as published by the Free
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ begin
13
13
  :version => Nuggets::VERSION,
14
14
  :summary => %q{Some extensions to the Ruby programming language.},
15
15
  :author => %q{Jens Wille},
16
- :email => %q{jens.wille@uni-koeln.de}
16
+ :email => %q{jens.wille@gmail.com}
17
17
  }
18
18
  }}
19
19
  rescue LoadError => err
data/lib/nuggets/all.rb CHANGED
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -0,0 +1,5 @@
1
+ require 'nuggets/array/boost_mixin'
2
+
3
+ class Array
4
+ include Nuggets::Array::BoostMixin
5
+ end
@@ -0,0 +1,78 @@
1
+ #--
2
+ ###############################################################################
3
+ # #
4
+ # A component of ruby-nuggets, some extensions to the Ruby programming #
5
+ # language. #
6
+ # #
7
+ # Copyright (C) 2007-2012 Jens Wille #
8
+ # #
9
+ # Authors: #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
+ # #
12
+ # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
+ # under the terms of the GNU Affero General Public License as published by #
14
+ # the Free Software Foundation; either version 3 of the License, or (at your #
15
+ # option) any later version. #
16
+ # #
17
+ # ruby-nuggets is distributed in the hope that it will be useful, but WITHOUT #
18
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
19
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License #
20
+ # for more details. #
21
+ # #
22
+ # You should have received a copy of the GNU Affero General Public License #
23
+ # along with ruby-nuggets. If not, see <http://www.gnu.org/licenses/>. #
24
+ # #
25
+ ###############################################################################
26
+ #++
27
+
28
+ require 'nuggets/array/mean_mixin'
29
+
30
+ module Nuggets
31
+ class Array
32
+ module BoostMixin
33
+
34
+ def self.included(base)
35
+ base.send :include, Nuggets::Array::MeanMixin
36
+ end
37
+
38
+ # call-seq:
39
+ # array.boost_factor(other_array) => aFloat
40
+ # array.boost_factor(other_array) { |array| ... } => aFloat
41
+ #
42
+ # Calculates the "boost factor" *from* the series of values in _array_ *to*
43
+ # the series of values in +other_array+ by means of their arithmetic mean
44
+ # or the value returned from the block given.
45
+ #
46
+ # Example:
47
+ #
48
+ # # series of runtime measurements for old version
49
+ # a = [1.5, 1.6, 1.4]
50
+ #
51
+ # # series of runtime measurements for new version
52
+ # b = [0.7, 0.8, 0.8]
53
+ #
54
+ # # what speedup did we get? => almost 50%
55
+ # a.boost_factor(b) #=> -0.48888888888888893
56
+ def boost_factor(other, &block)
57
+ block ||= :mean.to_proc
58
+ block[other] / block[self] - 1
59
+ end
60
+
61
+ alias_method :boof, :boost_factor
62
+
63
+ # call-seq:
64
+ # array.boost(factor) => anArray
65
+ #
66
+ # Maps each value in _array_ to its "boosted" value according to +factor+.
67
+ # (Cf. #boost_factor)
68
+ #
69
+ # Example:
70
+ #
71
+ # a.boost(a.boost_factor(b)).mean == b.mean
72
+ def boost(factor)
73
+ map { |x| x * (1 + factor) }
74
+ end
75
+
76
+ end
77
+ end
78
+ end
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -47,7 +47,7 @@ module Nuggets
47
47
  return 0.0 if empty?
48
48
 
49
49
  target = first.respond_to?(:to_ary) ? self :
50
- ::Array.new(size) { |i| i + 1 }.zip(self)
50
+ self.class.new(size) { |i| [i + 1, at(i)] }
51
51
 
52
52
  c = target.cov
53
53
 
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2012 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -4,10 +4,10 @@
4
4
  # A component of ruby-nuggets, some extensions to the Ruby programming #
5
5
  # language. #
6
6
  # #
7
- # Copyright (C) 2007-2011 Jens Wille #
7
+ # Copyright (C) 2007-2012 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -25,16 +25,10 @@
25
25
  ###############################################################################
26
26
  #++
27
27
 
28
- require 'nuggets/array/variance_mixin'
29
-
30
28
  module Nuggets
31
29
  class Array
32
30
  module RegressionMixin
33
31
 
34
- def self.included(base)
35
- base.send :include, Nuggets::Array::VarianceMixin
36
- end
37
-
38
32
  # call-seq:
39
33
  # array.linear_least_squares => anArray
40
34
  #
@@ -45,26 +39,112 @@ module Nuggets
45
39
  def linear_least_squares
46
40
  return [] if empty?
47
41
 
48
- target = first.respond_to?(:to_ary) ? self :
49
- ::Array.new(size) { |i| i + 1 }.zip(self)
42
+ sx, sy, sq, sp, xys = 0.0, 0.0, 0.0, 0.0, first.respond_to?(:to_ary) ?
43
+ self : self.class.new(size) { |i| [i + 1, at(i)] }
50
44
 
51
- sx, sy = 0.0, 0.0
45
+ xys.each { |x, y| sx += x; sy += y; sq += x ** 2; sp += x * y }
52
46
 
53
- target.each { |x, y|
54
- sx += x
55
- sy += y
56
- }
57
-
58
- v = target.var { |x, _| x }
59
-
60
- b = v.zero? ? 0.0 : target.cov / v
47
+ b = (v = sq * size - sx ** 2) == 0 ? 0 : (sp * size - sx * sy) / v
61
48
  a = (sy - b * sx) / size
62
49
 
63
- target.map { |x, _| [x, a + b * x] }
50
+ xys.map { |x, _| [x, a + b * x] }
64
51
  end
65
52
 
66
53
  alias_method :llsq, :linear_least_squares
67
54
 
55
+ # call-seq:
56
+ # array.linear_least_squares_incremental => anIncrementalLinearRegression
57
+ #
58
+ # Returns an instance of IncrementalLinearRegression for _array_; _array_
59
+ # being a list of values (in contrast to #linear_least_squares, which also
60
+ # accepts <tt>{x,y}</tt> pairs). Use IncrementalLinearRegression directly,
61
+ # or apply this method to an empty _array_, for more control over its input
62
+ # data.
63
+ def linear_least_squares_incremental
64
+ IncrementalLinearRegression.new(*self)
65
+ end
66
+
67
+ alias_method :llsqi, :linear_least_squares_incremental
68
+
69
+ # Inspired by {Incremental Simple Linear Regression in Ruby}[http://blog.codewren.ch/post/31378435699].
70
+ #
71
+ # Use #push to add a single <tt>{x,y}</tt> pair, #add to add a list of +y+
72
+ # values, and #<< to add a single +y+ value. Whenever a single +y+ value is
73
+ # added, it's associated with an +x+ value of its position (rank) in the
74
+ # data series.
75
+ #
76
+ # Call #to_a (or any Enumerable method) to work with the regression points.
77
+ class IncrementalLinearRegression
78
+
79
+ include Enumerable
80
+
81
+ def initialize(*ys)
82
+ clear
83
+ add(*ys)
84
+ end
85
+
86
+ def clear
87
+ @x = @y = @xx = @xy = 0.0
88
+ @cnt, @slope = 0, nil
89
+ self
90
+ end
91
+
92
+ def push(x, y)
93
+ cnt, @slope = @cnt += 1, nil
94
+
95
+ @x += (x - @x) / cnt
96
+ @y += (y - @y) / cnt
97
+ @xx += (x * x - @xx) / cnt
98
+ @xy += (x * y - @xy) / cnt
99
+
100
+ self
101
+ end
102
+
103
+ def add(*ys)
104
+ ys.each { |y| self << y }
105
+ self
106
+ end
107
+
108
+ def <<(y)
109
+ push(@cnt + 1, y)
110
+ end
111
+
112
+ def slope
113
+ @slope ||= @cnt < 2 ? 0 : (@xy - @x * @y) / (@xx - @x * @x)
114
+ end
115
+
116
+ def intercept
117
+ at(0)
118
+ end
119
+
120
+ def at(x)
121
+ @y + slope * (x - @x)
122
+ end
123
+
124
+ alias_method :[], :at
125
+
126
+ def each
127
+ @cnt.times { |i| yield [x = i + 1, at(x)] }
128
+ self
129
+ end
130
+
131
+ def to_a(range = nil)
132
+ range ? range.map { |x| [x, at(x)] } : super()
133
+ end
134
+
135
+ def to_s
136
+ s, i = slope, intercept
137
+
138
+ y = s == 0 ? i : begin
139
+ x = s.abs == 1 ? "#{'-' if s < 0}x" : "#{s} * x"
140
+ i == 0 ? x : "#{x} #{i < 0 ? '-' : '+'} #{i.abs}"
141
+ end
142
+
143
+ "y := #{y}".gsub(/\.0\b/, '')
144
+ end
145
+
146
+ end
147
+
68
148
  end
69
149
  end
70
150
  end
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -64,7 +64,7 @@ module Nuggets
64
64
  return sx if empty?
65
65
 
66
66
  target = first.respond_to?(:to_ary) ? self :
67
- ::Array.new(size) { |i| i + 1 }.zip(self)
67
+ self.class.new(size) { |i| [i + 1, at(i)] }
68
68
 
69
69
  target.each { |x, y|
70
70
  sx += x
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2012 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #
@@ -7,7 +7,7 @@
7
7
  # Copyright (C) 2007-2011 Jens Wille #
8
8
  # #
9
9
  # Authors: #
10
- # Jens Wille <jens.wille@uni-koeln.de> #
10
+ # Jens Wille <jens.wille@gmail.com> #
11
11
  # #
12
12
  # ruby-nuggets is free software; you can redistribute it and/or modify it #
13
13
  # under the terms of the GNU Affero General Public License as published by #