From 8d7486a3e73381c0810e6fc40c7898c28d21c6ad Mon Sep 17 00:00:00 2001 From: Richard Nienaber Date: Sat, 20 Feb 2021 22:12:17 +0000 Subject: [PATCH] add 91 train in ruby --- 91 Train/ruby/train.rb | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 91 Train/ruby/train.rb diff --git a/91 Train/ruby/train.rb b/91 Train/ruby/train.rb new file mode 100644 index 00000000..772af741 --- /dev/null +++ b/91 Train/ruby/train.rb @@ -0,0 +1,58 @@ +def intro + puts " TRAIN + CREATIVE COMPUTING MORRISTOWN, NEW JERSEY + + + +TIME - SPEED DISTANCE EXERCISE + +" +end + +def get_user_guess + while true + begin + number = Float(gets.chomp) + return number + rescue ArgumentError + # Ignored + end + + puts "!NUMBER EXPECTED - RETRY INPUT LINE" + print "? " + end +end + +def main + intro + + loop do + car_speed = (Random.rand * 25 + 40).to_i + car_time = (Random.rand * 15 + 5).to_i + train_speed = (Random.rand * 19 + 20).to_i + + print " A CAR TRAVELING #{car_speed} MPH CAN MAKE A CERTAIN TRIP IN + #{car_time} HOURS LESS THAN A TRAIN TRAVELING AT #{train_speed} MPH. +HOW LONG DOES THE TRIP TAKE BY CAR? " + guess = get_user_guess + + answer = ((car_time * train_speed) / (car_speed - train_speed).to_f).round(5) + delta = (((answer - guess) * 100 / guess) + 0.5).abs.to_i + + if delta > 5 + puts "SORRY. YOU WERE OFF BY #{delta} PERCENT." + else + puts "GOOD! ANSWER WITHIN #{delta} PERCENT." + end + + print "CORRECT ANSWER IS #{answer == answer.to_i ? answer.to_i : answer} HOURS. + +ANOTHER PROBLEM (YES OR NO)? " + option = (gets || '').chomp.upcase + break unless option == 'YES' + end +end + +trap "SIGINT" do puts; exit 130 end + +main \ No newline at end of file