Averages/Pythagorean means: Difference between revisions

Content added Content deleted
(added perl)
(add Ruby)
Line 294: Line 294:


<pre>5.5 4.52872868812 3.41417152147</pre>
<pre>5.5 4.52872868812 3.41417152147</pre>

=={{header|Ruby}}==
{{works with|Ruby|1.9+}}
<lang ruby>class Array
def arithmetic_mean
inject(:+).to_f / length
end

def geometric_mean
inject(:*) ** (1.0 / length)
end

def harmonic_mean
length.to_f / inject(0) {|s, m| s += 1.0/m}
end
end

class Range
def method_missing(m, *args)
case m
when /_mean$/ then to_a.send(m)
else super
end
end
end

p a = (1..10).arithmetic_mean
p g = (1..10).geometric_mean
p h = (1..10).harmonic_mean
# is h < g < a ??
p g.between?(h, a)</lang>

outputs
<pre>5.5
4.52872868811677
3.41417152147406
true</pre>


=={{header|Tcl}}==
=={{header|Tcl}}==