Книга Ruby Wizardry Chapter 4 включает в себя следующий пример программы
we_wanna_ride = true
stops = ["East Bumpspark", "Endertromb Avenue", "New Mixico", "Mal Abochny"]
while we_wanna_ride
print "Where ya headin', friend?"
destination = gets.chomp
if stops.include? destination
puts "I know how to get to #{destination}! Here's the station list:"
stops.each do |stop|
puts stop
break if stop == destination
end
else
puts "Sorry, we don't stop at that station. Maybe another time!"
we_wanna_ride = false
end
end
Затем она создает несколько дополнительных проблем:
"Что делать, если пассажир идет другим путем?в поезде (например, из Малого Абочного в Восточный Бампспарк)? Как вы можете обновить свою программу для работы в обоих направлениях? Еще сложнее, что, если маршрут поезда большой круг (имеется в виду, если пассажир идет из Восточного Бампспарка в МалAbochny, следующая остановка после Mal Abochny должна снова стать East Bumpspark)? Как вы можете обновить свою программу, чтобы распечатать правильный список остановок поездов, если пассажир хочет объехать весь круг? "
У кого-нибудь есть идеи, как действовать здесь?Я начинающий программист, поэтому любая помощь будет принята с благодарностью.Вот мой прогресс до сих пор.Я подумал, что получу departure
от пользователя, а затем использую to.i, чтобы получить входные данные в целое число.Затем я мог бы использовать целочисленное значение для сравнения с позицией индекса в массиве.Если гонщик хочет пойти в противоположном направлении, я мог бы использовать что-то вроде stop.each.reverse, чтобы распечатать элементы массива в обратном порядке.
we_wanna_ride = true
stops = ["East Bumpspark(1)", "Endertromb Avenue(2)", "New Mixico(3)", "Mal Abochny(4)"]
puts "#{stops}"
while we_wanna_ride
print "Select a destination number"
destination = gets.chomp.to_i
print "Select a departure number"
departure = gets.chomp.to_i
if departure <= destination
stops.each do |stop|
puts stop
break if stop == destination
end
else puts "Sorry"
we_wanna_ride = false
end
end