#!/usr/bin/ruby

#
## http://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);
}
