From: Robert Klemme Date: 2008-10-01T20:43:26+09:00 Subject: Re: Mode method for Array 2008/10/1 Erik Veenstra : > Speed is also the reason for "pre-defining" variables used in > iterations. (6% faster!!) Premature optimization IMHO. Here's another nice and short one: irb(main):001:0> module Enumerable irb(main):002:1> def mode irb(main):003:2> max = 0 irb(main):004:2> c = Hash.new 0 irb(main):005:2> each {|x| cc = c[x] += 1; max = cc if cc > max} irb(main):006:2> c.select {|k,v| v == max}.map {|k,v| k} irb(main):007:2> end irb(main):008:1> end => nil irb(main):009:0> [3, 1, 1, 55, 55].mode => [55, 1] irb(main):010:0> [].mode => [] irb(main):011:0> Cheers robert -- remember.guy do |as, often| as.you_can - without end