Я пишу программу, которая принимает входные данные, сохраняет ее как хэш и сортирует значения.Проблема с добавлением хэш-значения ruby
У меня возникли проблемы с сопоставлением текущего значения хеша с переменной.
Пример ввода:
А 1
В 3
С 5
А 2
B 7
С 2
Образец Выход:
А 1 2
B 3 7
C 2 5
Все работает отдельно от этой части, и я не уверен, почему.
if values.key?(:keys)
if values[keys] >= val
values.store(keys,val.prepend(val + " "))
else
values.store(keys,val.concat(" " + val))
end
else
values.store(keys,val)
end
i = i + 1
end
Остальной код:
#get amount of records
size = gets.chomp
puts size
size = size.to_i
values = Hash.new(0)
i = 0
while i < (size * 2)
text = gets.chomp
#split string and remove space
keys = text.split[0]
val = text.split[1]
#check if key already exists,
# if current value is greater than new value append new value to end
# else put at beginning of current value
if values.key?(:keys)
if values[keys] >= val
values.store(keys,val.prepend(val + " "))
else
values.store(keys,val.concat(" " + val))
end
else
values.store(keys,val)
end
i = i + 1
end
#sort hash by key
values = values.sort_by { |key, value| key}
#output hash values
values.each{|key, value|
puts "#{key}:#{value}"
}
Может кто-нибудь помочь мне? Это было бы очень признательно.
большое спасибо за вашу помощь! Я почесываю голову на это целую вечность haha – pugs
Если вы хотите улучшить это дальше, то гораздо более разумная структура данных будет примерно такой: '{" A "=> [1, 2]," B " => [3, 7], "C" => [5, 2]} '. Затем вы можете выполнять любое переупорядочение ключей, не вмешиваясь в строковые манипуляции.(Например, ваша текущая версия будет разбита на входы '> = 10', или если вы назначите 3 или более значений для ключа.) –