Ruby Frequently United List

时间:2017-09-03 09:17:35

标签: ruby

我有一个列表throw new IllegalArgumentException("No two sum solution");

在Ruby中,我如何检查列表是否经常联合"?

示例:[1, 1, 20, 20, 20, 4, 4, 7, 5, 5, 7] 经常联合

修改

另一个例子:[2, 2, 150, 150, 150, 70, 70, 70]不是经常联合因为150不在一起。

1 个答案:

答案 0 :(得分:2)

检查下一个元素是否等于当前元素,例如:

p [1, 1, 20, 20, 20, 4, 4, 7, 5, 5, 7].chunk_while(&:==).all? { |e| e.size > 1 }
p [2, 2, 150, 150, 150, 70, 70, 70].chunk_while(&:==).all? { |e| e.size > 1 }
# => false
# => true

编辑:

def some_method(array)
  hash = Hash.new(0)
  array.each { |e| hash[e] += 1 } 

  if hash.values.any?(&1.method(:==)) 
    true
  else 
    array.chunk_while(&:==).all? { |e| e.size > 1 }
  end
end