2017-09-03 55 views
-2

我收到了一个清单[1, 1, 20, 20, 20, 4, 4, 7, 5, 5, 7]Ruby常见联合名单

在Ruby中,如何检查列表是否“经常统一”?

举例:[2, 2, 150, 150, 150, 70, 70, 70]经常联合

编辑

又如:[2, 2, 150, 150, 150, 70, 70, 70, 150]不是经常联合因为150不在一起。

+3

是什么_frequently united_是什么意思? –

+1

“在Ruby中,如何检查列表是否”经常团结“? - 通过指定“经常联合”意味着什么,然后编写一个程序来检查该属性。如果您的程序有问题,请仔细阅读您正在使用的所有方法,类,模块和库的文档,为您的程序编写测试,使用笔和纸记录执行情况,单步执行调试程序,然后在上面睡觉,从头开始,再次睡上,然后*然后只有这样*问一个关于[so]的重点狭窄的问题。 –

回答

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 
+0

谢谢,先生!有用 ! –

+1

如果你有一个元素,它会返回'false',例如:'[1,1,2,2,3] .chunk_while(&:==)。all? {| e | e.size> 1}'返回'false'。这是个问题吗? –

+0

你是对的。这可能是一个问题。如果列表包含单个元素,如何确保它返回true? –