Module: Mode
- Defined in:
- lib/average/mode.rb
Instance Method Summary collapse
- #build_hash_result(result) ⇒ Object
- #build_repetition_result(array) ⇒ Object
- #get_mode(array) ⇒ Object
- #get_unique_mode(array) ⇒ Object
- #repetition_hash(array) ⇒ Object
Instance Method Details
#build_hash_result(result) ⇒ Object
19 20 21 |
# 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) ⇒ Object
23 24 25 |
# 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) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 |
# 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) ⇒ Object
27 28 29 30 31 32 |
# 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) ⇒ Object
15 16 17 |
# 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 |