Вопрос:
Создайте метод для массива, который возвращает хеш с ключом в качестве длины элемента и значением в виде массива всех элементов этой длины.Используйте Array#each
.
Возвращенный хэш должен быть отсортирован по ключу.
Я попытался сделать это с помощью сортировки хэша по длине.Я почти решил это, используя другой метод, но я хочу использовать split и hash для достижения ожидаемого результата.
Может кто-нибудь предложить какие-либо изменения в моем коде ниже?
Входной аргумент:
array-hash.rb "['abc','def',1234,234,'abcd','x','mnop',5,'zZzZ']"
Ожидаемый результат:
{1=>["x", "5"], 3=>["abc", "def", "234"], 4=>["1234", "abcd", "mnop", "zZzZ"]}
class String
def key_length(v2)
hash = {}
v2.each do |item|
item_length = item.to_s.length
hash[item_length] ||= []
hash[item_length].push(item)
end
Hash[hash.sort]
end
end
reader = ''
if ARGV.empty?
puts 'Please provide an input'
else
v1 = ARGV[0]
v2 = v1.tr("'[]''",'').split
p reader.key_length(v2)
end
Фактический результат:
{35=>["abc,def,1234,234,abcd,x,mnop,5,zZzZ"]}