Я полагаю, задача состоит в том, чтобы определить максимальное число последовательных одинаковых элементов в заданном массиве.
def recurring(arr)
arr.chunk(&:itself).map { |_,a| a.size }.max
end
arr = [1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 4, 1, 1]
recurring arr
#=> 5
Object#itself был введен в Ruby v2.2. Для более ранних версий напишите
arr.chunk { |e| e }.map { |_,a| a.size }.max
шаги:
enum = arr.chunk(&:itself)
#=> #<Enumerator: #<Enumerator::Generator:0x007fbb04943088>:each>
Мы можем увидеть, какие элементы будут сгенерированы этим интервьюером путем преобразования его в массив:
enum.to_a
#=> [[1, [1, 1, 1, 1, 1]], [2, [2]], [3, [3, 3, 3]], [4, [4, 4]], [1, [1, 1]]]
b = enum.map { |_,a| a.size }
#=> [5, 1, 3, 2, 2]
b.max
#=> 5
Вы хотите определить максимальное количество последовательных равные элементы в заданном массиве? Если это так, ваше первое предложение неверно, и ваш код не имеет значения и, следовательно, вводит в заблуждение. Вам нужно отредактировать вопрос, чтобы уточнить, что вы хотите сделать. –