Guess the number/With feedback (player): Difference between revisions
Content added Content deleted
(Added Wren) |
ReeceGoding (talk | contribs) (Added R) |
||
Line 2,407: | Line 2,407: | ||
Is your number less than or equal to 71?no |
Is your number less than or equal to 71?no |
||
Your number is 72.</pre> |
Your number is 72.</pre> |
||
=={{header|R}}== |
|||
Can be fooled if you lie to it. For example, always reporting "h" for guessANumberPlayer(1,5) will have it guess 0. |
|||
<lang r>guessANumberPlayer<-function(low,high) |
|||
{ |
|||
boundryErrorCheck(low,high) |
|||
repeat |
|||
{ |
|||
guess<-floor(mean(c(low,high))) |
|||
#Invalid inputs to this switch will simply cause the repeat loop to run again, breaking nothing. |
|||
switch(guessResult(guess), |
|||
l = low<-guess+1, |
|||
h = high<-guess-1, |
|||
c = return(paste0("Your number is ",guess,"."," I win!"))) |
|||
} |
|||
} |
|||
#Copied from my solution at https://rosettacode.org/wiki/Guess_the_number/With_feedback#R |
|||
boundryErrorCheck<-function(low,high) |
|||
{ |
|||
if(!is.numeric(low)||as.integer(low)!=low){stop("Lower bound must be an integer. Try again.")} |
|||
if(!is.numeric(high)||as.integer(high)!=high){stop("Upper bound must be an integer. Try again.")} |
|||
if(high<low){stop("Upper bound must be strictly greater than lower bound. Try again.")} |
|||
if(low==high){stop("This game is impossible to lose. Try again.")} |
|||
invisible() |
|||
} |
|||
guessResult<-function(guess) |
|||
{ |
|||
readline(paste0("My guess is ",guess,". If it is too low, submit l. If it is too high, h. Otherwise, c. ")) |
|||
}</lang> |
|||
=={{header|Racket}}== |
=={{header|Racket}}== |