Использование команды gets для сортировки массива по алфавиту в Ruby

Я нубистка из Ruby, и я просто пытаюсь использовать команду gets для сортировки массива слов ("собака", "кошка", "обезьяна"), которые должны вводиться индивидуально с помощью gets и становиться ("ape", "cat", "собака")

Я пытался:

list = Object.new
list = []
word = STDIN.gets
list.push(word)
$/ = "END"
puts list

Любая помощь будет очень полезна, так как она поможет моей дочери быстрее разобраться с домашней работой и научиться печатать.

2 ответа

Решение

Вы также можете ввести все слова сразу, если хотите:

>> words = gets.chomp.split(/,\s*/).sort
dog, cat,ape                             #=> ["ape", "cat", "dog"]

Если вы хотите прочитать их по отдельности:

>> words = [] #=> []
>> until (word = gets.chomp).empty? do
..     words << word
..   end
cat
ape
dog
         #=> nil
>> words.sort #=> ["ape", "cat", "dog"]

Это просто копирование / вставка из IRB, но достаточно простое, чтобы встроить в нужную программу.

list = []
until (word = gets.chomp) == "END"  do
  list << word
end

puts "Sorted Values:"
puts list.sort

Это будет принимать до тех пор, пока вы не дадите ему "END" (вы можете изменить это по своему желанию).

Я звоню Array#sort

Другие вопросы по тегам