function guess
% Play a guessing game with the user.  Try to guess a number,
%   using a binary search to narrow down the value.
% At the end of the game, when we have finally found the number,
%   print a message describing how many guesses it took.
% Arguments:
%   none
% MWR 11/29/2011

    %   Greet the user
    fprintf(1, 'Hello!  Please play a guessing game with me.\n');

    %   Set initial values
    %   bottom and top of range of values we will guess
    bottom = 1;
    top = 100;
    fprintf(1, 'Please guess a number between %d and %d \n', bottom, top);

    %   number of guesses it has taken so far
    guesses_so_far = 0;

    %   LOOP
    done_yet = 0;
    while (done_yet == 0)

      % guess the middle of the current range
      guess = round((top + bottom)/2);
      fprintf(1, 'My guess is %3d.\n', guess);
      guesses_so_far = guesses_so_far + 1;

      % get feedback from user
      %    'y' for 'yes, that is correct'
      %    'h' for 'guess is too high'
      %    'l' for 'guess is too low'
      user_says = input('Type y if correct, h if too high, l if too low ', 's');

      % incorporate the feedback
      if (user_says == 'y')
        % if we are correct, break out of the loop
        done_yet = 1;

      elseif (user_says == 'h')
        % if too high, re-set range to lower half of current
        top = guess;

      elseif (user_says == 'l')
        % if too low,  re-set range to upper half of current
        bottom = guess;

        % whoops! the user typed an invalid response
        fprintf(1, 'sorry, I did not understand that\n');

    % End of LOOP over guesses
    % Victory!
    % print out the number of guesses it took