Module Enumerable
In: lib/core_ex.rb
lib/core_ex/enumerable.rb

Methods

Included Modules

CoreEx::Enumerable

Public Instance methods

[Source]

# File lib/core_ex/enumerable.rb, line 36
  def average ( init=0 )
    size_ = size.to_f
    inject(init) { |accu, x| accu + x / size_ }
  end

Basically, do the same as each_with_index but yield the arguments in reverse order. Thus an array can be assume in certain cases to a hash.

[Source]

# File lib/core_ex/enumerable.rb, line 52
  def each_pair ( &block )
    each_with_index { |x, i| block[i, x] }
  end

See also Enumerable#inject

[Source]

# File lib/core_ex/enumerable.rb, line 17
  def fold ( init, each_method=:each, &block )
    accu = init
    send(each_method) do |*a|
      accu = block[accu, *a]
    end
    accu
  end

[Source]

# File lib/core_ex/enumerable.rb, line 26
  def foldi ( init, &block )
    fold(init, :each_with_index, &block)
  end

[Source]

# File lib/core_ex/enumerable.rb, line 63
  def group_sequences_by ( &block )
    result = []
    current = nil
    each do |x|
      if current.nil?
        result << [x]
      else
        if block[current, x]
          result.last << x
        else
          result << [x]
        end
      end
      current = x
    end
    result
  end

[Source]

# File lib/core_ex/enumerable.rb, line 31
  def prod ( init=1 )
    inject(init) { |accu, x| accu * x }
  end

[Source]

# File lib/core_ex/enumerable.rb, line 57
  def rec_fold ( init, &block )
    fold(init) do |accu1, *a1|
      a1.fold(accu1) { |accu2, a2| a2.rec_fold(accu2, &block) }
    end
  end

fr: ecart type

[Source]

# File lib/core_ex/enumerable.rb, line 43
  def standard_deviation ( init=0, average_=average(init) )
    size_ = size.to_f
    sigma = inject(init) { |accu, x| accu + ((x - average_) ** 2) / size_ }
    Math.sqrt sigma
  end

[Validate]