Skip to content

Instantly share code, notes, and snippets.

@mhriess
Created August 24, 2012 06:00
Show Gist options
  • Save mhriess/3446253 to your computer and use it in GitHub Desktop.
Save mhriess/3446253 to your computer and use it in GitHub Desktop.
Write a method mode which takes an Array of numbers
as its input and returns an Array of the most frequent values.
If there's only one most-frequent value, it returns a
single-element Array.
For example,
mode([1,2,3,3]) # => [3]
mode([4.5, 0, 0]) # => [0]
mode([1.5, -1, 1, 1.5]) # => [1.5]
mode([1,1,2,2]) # => [1,2]
mode([1,2,3]) # => [1,2,3], because all occur with
equal frequency
def mode(array)
f = Hash.new(0)
array.each do |x|
f[x] += 1
end
max = 0
modes = []
f.each do |key, value|
if value > max
modes = [key]
max = value
elsif value == max
modes.push(key)
end
end
modes
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment