2015-12-06 1 views
2

В Ruby самый элегантный способ написать метод, который принимает группу массивов в качестве аргументов и возвращает массив с наибольшим количеством элементов?Возвращает наибольший массив из набора массивов

def largest_array(*arrays) 
end 

Например, если:

a1 = [*0..9] 
a2 = [*0..99] 
a3 = [*0..49] 
a4 = [*0..19] 

largest_array(a1, a2, a3, a4) должен вернуть a2.

Обратите внимание, что метод должен возвращать ссылку на самый большой массив, а не на размер. Кроме того, в этом случае не имеет значения, какой массив возвращается, если существуют массивы одинаковых размеров.

ответ

6

Использование Enumerable#max_by:

def largest_array(*arrays) 
    arrays.max_by &:size 
end 


a1 = [*0..9] 
a2 = [*0..99] 
a3 = [*0..49] 
a4 = [*0..19] 
largest_array(a1, a2, a3, a4) == a2 # => true 
+0

Отлично! Спасибо. –