Sha256: 01dc70f727a229d1efdaee7f5afe020187eebd15a464766cf6d9c90113dbdc88

Contents?: true

Size: 438 Bytes

Versions: 3

Compression:

Stored size: 438 Bytes

Contents

module Array::Average
  def avg
    return 0 if empty?

    sum = inject(0) { |s, i| s + i }

    avg = sum / length
    return avg if length * avg == sum
    sum * 1.0 / length
  end
end

class Array
  include Average
end

module Array::Average::Etest
  def test_avg
    assert_equal(1, [ 1 ].avg)
    assert_equal(2, [ 1, 3 ].avg)
    assert_equal(0, [ ].avg)
    assert_equal(2.0 / 3, [ 1, 3, -2 ].avg)
  end
end if VEX_TEST == "base"

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vex-0.6.2 lib/vex/base/array/avg.rb
vex-0.4.4 lib/vex/base/array/avg.rb
vex-0.4.2 lib/vex/base/array/avg.rb