2017-09-03 38 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? –