Module: Enumerable
- Defined in:
- lib/muflax/align.rb,
lib/muflax/enumerable.rb
Overview
Copyright muflax <[email protected]>, 2013 License: GNU GPL 3 <www.gnu.org/copyleft/gpl.html>
Instance Method Summary collapse
- #average ⇒ Object (also: #mean, #avg)
- #count_by(&block) ⇒ Object
- #geometric_mean ⇒ Object
- #histogram(&block) ⇒ Object
- #length_of_longest ⇒ Object
- #length_of_shortest ⇒ Object
-
#longest ⇒ Object
find longest element.
- #median ⇒ Object
- #median_by(&block) ⇒ Object
- #percentile(percent) ⇒ Object
- #percentile_by(percent, &block) ⇒ Object
- #rfind(*arg, &block) ⇒ Object
-
#shortest ⇒ Object
find shortest element.
- #to_percent ⇒ Object
- #to_ratio ⇒ Object
- #triangle ⇒ Object
- #with_previous ⇒ Object
Instance Method Details
#average ⇒ Object Also known as: mean, avg
7 8 9 |
# File 'lib/muflax/enumerable.rb', line 7 def average self.sum.to_f / self.size.to_f end |
#count_by(&block) ⇒ Object
46 47 48 |
# File 'lib/muflax/enumerable.rb', line 46 def count_by &block self.histogram(&block).sort_by(&:second).to_h end |
#geometric_mean ⇒ Object
13 14 15 |
# File 'lib/muflax/enumerable.rb', line 13 def geometric_mean self.reduce(:*).to_f ** (1.0 / self.size.to_f) end |
#histogram(&block) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/muflax/enumerable.rb', line 37 def histogram &block histo = vivaHash 0 self.each do |el| histo[block.call(el)] += 1 end histo end |
#length_of_longest ⇒ Object
17 18 19 |
# File 'lib/muflax/align.rb', line 17 def length_of_longest self.longest.str_length end |
#length_of_shortest ⇒ Object
21 22 23 |
# File 'lib/muflax/align.rb', line 21 def length_of_shortest self.shortest.str_length end |
#longest ⇒ Object
find longest element
13 14 15 |
# File 'lib/muflax/align.rb', line 13 def longest self.max_by{|s| s.str_length} end |
#median ⇒ Object
17 18 19 |
# File 'lib/muflax/enumerable.rb', line 17 def median self.percentile 0.5 end |
#median_by(&block) ⇒ Object
21 22 23 |
# File 'lib/muflax/enumerable.rb', line 21 def median_by &block self.percentile_by 0.5, &block end |
#percentile(percent) ⇒ Object
25 26 27 |
# File 'lib/muflax/enumerable.rb', line 25 def percentile percent self.sort[(self.size * percent).round] end |
#percentile_by(percent, &block) ⇒ Object
29 30 31 |
# File 'lib/muflax/enumerable.rb', line 29 def percentile_by percent, &block self.sort_by(&block)[(self.size * percent).round] end |
#rfind(*arg, &block) ⇒ Object
50 51 52 |
# File 'lib/muflax/enumerable.rb', line 50 def rfind *arg, &block self.reverse.find(*arg, &block) end |
#shortest ⇒ Object
find shortest element
8 9 10 |
# File 'lib/muflax/align.rb', line 8 def shortest self.min_by{|s| s.str_length} end |
#to_percent ⇒ Object
59 60 61 62 |
# File 'lib/muflax/enumerable.rb', line 59 def to_percent sum = self.sum / 100.0 self.map{|n| (n.to_f / sum).round(1)} end |
#to_ratio ⇒ Object
54 55 56 57 |
# File 'lib/muflax/enumerable.rb', line 54 def to_ratio sum = self.sum self.map{|n| (n.to_f / sum).round(1)} end |
#triangle ⇒ Object
33 34 35 |
# File 'lib/muflax/enumerable.rb', line 33 def triangle self.to_a.triangle end |
#with_previous ⇒ Object
64 65 66 |
# File 'lib/muflax/enumerable.rb', line 64 def with_previous self.reduce(nil){|prev, cur| yield prev, cur; cur}; self end |