module Enumerable

def minmax_by

Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
def minmax_by
  return to_enum(:minmax_by) unless block_given?
  min_object, min_result = nil, Backports::MOST_EXTREME_OBJECT_EVER
  max_object, max_result = nil, Backports::MOST_EXTREME_OBJECT_EVER
  each do |object|
    result = yield object
    min_object, min_result = object, result if min_result > result
    max_object, max_result = object, result if max_result < result
  end
  [min_object, max_object]
end