#!/usr/bin/ruby
#
## https://rosettacode.org/wiki/Guess_the_number/With_feedback_(player)
#
var min = 1;
var max = 99;
var tries = 0;
var guess = max.rand(min).int;
print <<"EOT".chomp;
\n=>> Think of a number between #{min} and #{max} and I'll guess it!\n
Press <ENTER> when are you ready...
EOT
STDIN.readline;
loop {
print <<-EOT.chomp
\n=>> My guess is: #{guess} Is your number higher, lower, or equal? (h/l/e)
>#{' '}
EOT
++tries;
given (STDIN.readline) {
case(max <= min) {
say "\nI give up...";
break;
}
when(/^h/i) {
min = guess+1;
}
when(/^l/i) {
max = guess;
}
when(/^e/i) {
say "\nI knew it! It took me only #{tries} tries.";
break;
}
default {
say "error: invalid score";
next;
}
}
guess = (min+max / 2 -> int);
}