module Mode
Public Instance Methods
build_hash_result(result)
click to toggle source
# File lib/average/mode.rb, line 19 def build_hash_result(result) result[:hash_result].select { |key, value| value == result[:max_repetition] } end
build_repetition_result(array)
click to toggle source
# File lib/average/mode.rb, line 23 def build_repetition_result(array) array.inject({}) { |key, value| key[value] = array.count(value.to_f); key } end
get_mode(array)
click to toggle source
# File lib/average/mode.rb, line 2 def get_mode(array) if valid_array?(array) result = repetition_hash( clean_array(array) ) if build_hash_result(result).count > 1 # It contains more than one mode build_hash_result(result).keys.collect { |float| float.to_i } else # It contains only one mode build_hash_result(result).keys.first end end end
get_unique_mode(array)
click to toggle source
# File lib/average/mode.rb, line 27 def get_unique_mode(array) # only for Ruby versions bigger than 1.8.7 -> http://apidock.com/ruby/v1_8_7_72/Enumerable/max_by if valid_array?(array) clean_array(array).max_by { |x| clean_array(array).count(x) } end end
repetition_hash(array)
click to toggle source
# File lib/average/mode.rb, line 15 def repetition_hash(array) { hash_result: build_repetition_result(array), max_repetition: build_repetition_result(array).values.max } end