Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,3 @@
---
from: http://rosettacode.org/wiki/Guess_the_number/With_feedback
note: Games

View file

@ -0,0 +1,15 @@
;Task:
Write a game (computer program) that follows the following rules:
::* The computer chooses a number between given set limits.
::* The player is asked for repeated guesses until the the target number is guessed correctly
::* At each guess, the computer responds with whether the guess is:
:::::* higher than the target,
:::::* equal to the target,
:::::* less than the target,   or
:::::* the input was inappropriate.
;Related task:
*   [[Guess the number/With Feedback (Player)]]
<br><br>

View file

@ -0,0 +1,23 @@
V (target_min, target_max) = (1, 100)
print("Guess my target number that is between #. and #. (inclusive).\n".format(target_min, target_max))
V target = random:(target_min..target_max)
V (answer, i) = (target_min - 1, 0)
L answer != target
i++
V txt = input(Your guess(#.): .format(i))
X.try
answer = Int(txt)
X.catch ValueError
print( I don't understand your input of '#.' ?.format(txt))
L.continue
I answer < target_min | answer > target_max
print( Out of range!)
L.continue
I answer == target
print( Ye-Haw!!)
L.break
I answer < target {print( Too low.)}
I answer > target {print( Too high.)}
print("\nThanks for playing.")

View file

@ -0,0 +1,47 @@
# simple guess-the-number game #
main:(
BOOL valid input := TRUE;
# register an error handler so we can detect and recover from #
# invalid input #
on value error( stand in
, ( REF FILE f )BOOL:
BEGIN
valid input := FALSE;
TRUE
END
);
# construct a random integer between 1 and 100 #
INT number = 1 + ROUND ( random * 99 );
print( ( "I'm thinking of a number between 1 and 100", newline ) );
# read the user's guesses until they guess correctly #
# we give feedback so they can find the number using interval #
# halving #
WHILE
print( ( "What do you think it is? " ) );
INT guess;
WHILE
valid input := TRUE;
read( ( guess, newline ) );
NOT valid input
DO
print( ( "Please guess a number between 1 and 100", newline ) )
OD;
number /= guess
DO
IF number > guess
THEN
# the user's guess was too small #
print( ( newline, "My number is higher than that", newline ) )
ELSE
# the user's guess was too large #
print( ( newline, "My number is lower than that", newline ) )
FI
OD;
print( ( "That's correct!", newline ) )
)

View file

@ -0,0 +1,28 @@
# syntax: GAWK -f GUESS_THE_NUMBER_WITH_FEEDBACK.AWK
BEGIN {
L = 1
H = 100
srand()
n = int(rand() * (H-L+1)) + 1
printf("I am thinking of a number between %d and %d. Try to guess it.\n",L,H)
while (1) {
getline ans
if (ans !~ /^[0-9]+$/) {
print("Your input was not a number. Try again.")
continue
}
if (n == ans) {
print("Well done you.")
break
}
if (n > ans) {
print("Incorrect, your answer was too low. Try again.")
continue
}
if (n < ans) {
print("Incorrect, your answer was too high. Try again.")
continue
}
}
exit(0)
}

View file

@ -0,0 +1,19 @@
PROC Main()
BYTE x,n,min=[1],max=[100]
PrintF("Try to guess a number %B-%B: ",min,max)
x=Rand(max-min+1)+min
DO
n=InputB()
IF n<min OR n>max THEN
Print("The input is incorrect. Try again: ")
ELSEIF n<x THEN
Print("My number is higher. Try again: ")
ELSEIF n>x THEN
Print("My number is lower. Try again: ")
ELSE
PrintE("Well guessed!")
EXIT
FI
OD
RETURN

View file

@ -0,0 +1,51 @@
with Ada.Numerics.Discrete_Random;
with Ada.Text_IO;
procedure Guess_Number_Feedback is
function Get_Int (Prompt : in String) return Integer is
begin
loop
Ada.Text_IO.Put (Prompt);
declare
Response : constant String := Ada.Text_IO.Get_Line;
begin
if Response /= "" then
return Integer'Value (Response);
end if;
exception
when others =>
Ada.Text_IO.Put_Line ("Invalid response, not an integer!");
end;
end loop;
end Get_Int;
procedure Guess_Number (Lower_Limit : Integer; Upper_Limit : Integer) is
subtype Number is Integer range Lower_Limit .. Upper_Limit;
package Number_RNG is new Ada.Numerics.Discrete_Random (Number);
Generator : Number_RNG.Generator;
My_Number : Number;
Your_Guess : Integer;
begin
Number_RNG.Reset (Generator);
My_Number := Number_RNG.Random (Generator);
Ada.Text_IO.Put_Line ("Guess my number!");
loop
Your_Guess := Get_Int ("Your guess: ");
exit when Your_Guess = My_Number;
if Your_Guess > My_Number then
Ada.Text_IO.Put_Line ("Wrong, too high!");
else
Ada.Text_IO.Put_Line ("Wrong, too low!");
end if;
end loop;
Ada.Text_IO.Put_Line ("Well guessed!");
end Guess_Number;
Lower_Limit : Integer;
Upper_Limit : Integer;
begin
loop
Lower_Limit := Get_Int ("Lower Limit: ");
Upper_Limit := Get_Int ("Upper Limit: ");
exit when Lower_Limit < Upper_Limit;
Ada.Text_IO.Put_Line ("Lower limit must be lower!");
end loop;
Guess_Number (Lower_Limit, Upper_Limit);
end Guess_Number_Feedback;

View file

@ -0,0 +1,39 @@
-- defining the range of the number to be guessed
property minLimit : 1
property maxLimit : 100
on run
-- define the number to be guessed
set numberToGuess to (random number from minLimit to maxLimit)
-- prepare a variable to store the user's answer
set guessedNumber to missing value
-- prepare a variable for feedback
set tip to ""
-- start a loop (will be exited by using "exit repeat" after a correct guess)
repeat
-- ask the user for his/her guess, the variable tip contains text after first guess only
set usersChoice to (text returned of (display dialog "Guess the number between " & minLimit & " and " & maxLimit & " inclusive" & return & tip default answer "" buttons {"Check"} default button "Check"))
-- try to convert the given answer to an integer and compare it the number to be guessed
try
set guessedNumber to usersChoice as integer
if guessedNumber is greater than maxLimit or guessedNumber is less than minLimit then
-- the user guessed a number outside the given range
set tip to "(Tipp: Enter a number between " & minLimit & " and " & maxLimit & ")"
else if guessedNumber is less than numberToGuess then
-- the user guessed a number less than the correct number
set tip to "(Tipp: The number is greater than " & guessedNumber & ")"
else if guessedNumber is greater than numberToGuess then
-- the user guessed a number greater than the correct number
set tip to "(Tipp: The number is less than " & guessedNumber & ")"
else if guessedNumber is equal to numberToGuess then
-- the user guessed the correct number and gets informed
display dialog "Well guessed! The number was " & numberToGuess buttons {"OK"} default button "OK"
-- exit the loop (quits this application)
exit repeat
end if
on error
-- something went wrong, remind the user to enter a numeric value
set tip to "(Tipp: Enter a number between " & minLimit & " and " & maxLimit & ")"
end try
end repeat
end run

View file

@ -0,0 +1,14 @@
100 L% = 1
110 U% = 10
120 N% = RND(1) * (U% - L% + 1) + L%
130 PRINT "A NUMBER FROM " L%;
140 PRINT " TO " U%;
150 PRINT ", CALLED A TARGET, HAS BEEN RANDOMLY CHOSEN."
160 FOR Q = 0 TO 1 STEP 0
170 INPUT "GUESS THE TARGET NUMBER: "; G%
180 IF G% < L% OR G% > U% THEN PRINT "THE INPUT WAS INAPPROPRIATE."
190 IF G% > N% THEN PRINT "THE GUESS WAS HIGHER THAN THE TARGET."
200 IF G% < N% THEN PRINT "THE GUESS WAS LESS THAN THE TARGET."
210 Q = G% = N%
220 NEXT
230 PRINT "THE GUESS WAS EQUAL TO THE TARGET."

View file

@ -0,0 +1,12 @@
n: random 1 10
while ø [
try? [
num: to :integer input "Guess the number: " n
case [num]
when? [=n][print "\tWell Guessed! :)", exit]
when? [>n][print "\tHigher than the target..."]
when? [<n][print "\tLess than the target..."]
else []
]
else -> print "\tInvalid input!"
]

View file

@ -0,0 +1,31 @@
MinNum = 1
MaxNum = 99999999999
Random, RandNum, %MinNum%, %MaxNum%
Loop
{
InputBox, Guess, Number Guessing, Please enter a number between %MinNum% and %MaxNum%:,, 350, 130,,,,, %Guess%
If ErrorLevel
ExitApp
If Guess Is Not Integer
{
MsgBox, 16, Error, Invalid guess.
Continue
}
If Guess Not Between %MinNum% And %MaxNum%
{
MsgBox, 16, Error, Guess must be a number between %MinNum% and %MaxNum%.
Continue
}
If A_Index = 1
TotalTime = %A_TickCount%
Tries = %A_Index%
If Guess = %RandNum%
Break
If Guess < %RandNum%
MsgBox, 64, Incorrect, The number guessed (%Guess%) was too low.
If Guess > %RandNum%
MsgBox, 64, Incorrect, The number guessed (%Guess%) was too high.
}
TotalTime := Round((A_TickCount - TotalTime) / 1000,1)
MsgBox, 64, Correct, The number %RandNum% was guessed in %Tries% tries, which took %TotalTime% seconds.

View file

@ -0,0 +1,14 @@
Min = 5: Max = 15
chosen = int(rand*(Max-Min+1)) + Min
print "Guess a whole number between "+Min+" and "+Max
do
input "Enter your number " ,guess
if guess < Min OR guess > Max then
print "That was an invalid number"
end
else
if guess < chosen then print "Sorry, your number was too low"
if guess > chosen then print "Sorry, your number was too high"
if guess = chosen then print "Well guessed!"
end if
until guess = chosen

View file

@ -0,0 +1,19 @@
Min% = 1
Max% = 10
chosen% = RND(Max%-Min%+1) + Min% - 1
REPEAT
PRINT "Guess a number between "; Min% " and " ;Max% ;
INPUT ": " guess%
CASE TRUE OF
WHEN guess% < Min% OR guess% > Max%:
PRINT "That was an invalid number"
WHEN guess% < chosen%:
PRINT "Sorry, your number was too low"
WHEN guess% > chosen%:
PRINT "Sorry, your number was too high"
OTHERWISE:
PRINT "Well guessed!"
EXIT REPEAT
ENDCASE
UNTIL FALSE
END

View file

@ -0,0 +1,43 @@
get "libhdr"
static $( randstate = ? $)
let rand(min,max) = valof
$( let x = ?
let range = max-min
let mask = 1
while mask < range do mask := (mask << 1) | 1
$( randstate := random(randstate)
x := (randstate >> 6) & mask
$) repeatuntil 0 <= x < range
resultis x + min
$)
let readguess(min,max) = valof
$( let x = ?
writes("Guess? ")
x := readn()
if min <= x < max then resultis x
writes("Invalid input.*N")
$) repeat
let play(min,max,secret) be
$( let tries, guess = 0, ?
$( guess := readguess(min,max)
if guess < secret then writes("Too low!*N")
if guess > secret then writes("Too high!*N")
tries := tries + 1
$) repeatuntil guess = secret
writef("Correct! You guessed it in %N tries.*N", tries)
$)
let start() be
$( let min, max = ?, ?
writes("Guess the number*N*N")
writes("Random seed? ") ; randstate := readn()
$( writes("Lower bound? ") ; min := readn()
writes("Upper bound? ") ; max := readn() + 1
test max-1 > min break or writes("Invalid bounds.*N")
$) repeat
wrch('*N')
play(min, max, rand(min, max))
$)

View file

@ -0,0 +1,17 @@
@echo off
:A
set /a number=%random% %% 10 + 1
:B
set /p guess=Choose a number between 1 and 10:
if %guess equ %number% goto win
if %guess% gtr 10 msg * "Number must be between 1 and 10."
if %guess% leq 0 msg * "Number must be between 1 and 10."
if %guess% gtr %number% echo Higher!
if %guess% lss %number% echo Lower!
goto B
:win
cls
echo You won! The number was %number%
pause>nul
goto A

View file

@ -0,0 +1,4 @@
1:"d">>048*"neewteb rebmun a sseuG">:#,_$\:.\"d na",,\,,:.55+,\-88+0v
<*2\_$\1+%+48*">",,#v>#+:&#>#5-:!_0`00p0"hgih"00g>_0"wol"00g!>_48vv1?
\1-:^v"d correctly!"<^,,\,+55,". >"$_,#!>#:<"Your guess was too"*<>+>
:#,_@>"ess" >"eug uoY">

View file

@ -0,0 +1,17 @@
number = random 10
p "Guess a number between 1 and 10."
until {
guess = ask("Guess: ").to_i
true? (guess.null? || { guess > 10 || guess < 1 })
{ p "Please guess a number between 1 and 10."}
{ true? guess == number
{ p "Correct!"; true }
{ true? guess < number
{ p "Too low!" }
{ p "Too high!" }
}
}
}

View file

@ -0,0 +1,28 @@
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
std::srand(std::time(0));
int lower, upper, guess;
std::cout << "Enter lower limit: ";
std::cin >> lower;
std::cout << "Enter upper limit: ";
std::cin >> upper;
int random_number = lower + std::rand() % ((upper + 1) - lower);
do
{
std::cout << "Guess what number I have: ";
std::cin >> guess;
if (guess > random_number)
std::cout << "Your guess is too high\n";
else if (guess < random_number)
std::cout << "Your guess is too low\n";
else
std::cout << "You got it!\n";
} while (guess != random_number);
return 0;
}

View file

@ -0,0 +1,39 @@
using System;
class Program
{
static void Main(string[] args)
{
const int from = 1;
const int to = 10;
int randomNumber = new Random().Next(from, to);
int guessedNumber;
Console.Write("The number is between {0} and {1}. ", from, to);
while (true)
{
Console.Write("Make a guess: ");
if (int.TryParse(Console.ReadLine(), out guessedNumber))
{
if (guessedNumber == randomNumber)
{
Console.WriteLine("You guessed the right number!");
break;
}
else
{
Console.WriteLine("Your guess was too {0}.", (guessedNumber > randomNumber) ? "high" : "low");
}
}
else
{
Console.WriteLine("Input was not an integer.");
}
}
Console.WriteLine();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}

View file

@ -0,0 +1,25 @@
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define lower_limit 0
#define upper_limit 100
int main(){
int number, guess;
srand( time( 0 ) );
number = lower_limit + rand() % (upper_limit - lower_limit + 1);
printf( "Guess the number between %d and %d: ", lower_limit, upper_limit );
while( scanf( "%d", &guess ) == 1 ){
if( number == guess ){
printf( "You guessed correctly!\n" );
break;
}
printf( "Your guess was too %s.\nTry again: ", number < guess ? "high" : "low" );
}
return 0;
}

View file

@ -0,0 +1,56 @@
read_number = proc (prompt: string) returns (int)
po: stream := stream$primary_output()
pi: stream := stream$primary_input()
while true do
stream$puts(po, prompt)
return(int$parse(stream$getl(pi)))
except when bad_format:
stream$putl(po, "Invalid number.")
end
end
end read_number
read_limits = proc () returns (int,int)
po: stream := stream$primary_output()
while true do
min: int := read_number("Lower limit? ")
max: int := read_number("Upper limit? ")
if min >= 0 cand min < max then return(min,max) end
stream$putl(po, "Invalid limits, try again.")
end
end read_limits
read_guess = proc (min, max: int) returns (int)
po: stream := stream$primary_output()
while true do
guess: int := read_number("Guess? ")
if min <= guess cand max >= guess then return(guess) end
stream$putl(po, "Guess must be between "
|| int$unparse(min) || " and " || int$unparse(max) || ".")
end
end read_guess
play_game = proc (min, max, secret: int)
po: stream := stream$primary_output()
guesses: int := 0
while true do
guesses := guesses + 1
guess: int := read_guess(min, max)
if guess = secret then break
elseif guess < secret then stream$putl(po, "Too low!")
elseif guess > secret then stream$putl(po, "Too high!")
end
end
stream$putl(po, "Correct! You got it in " || int$unparse(guesses) || " tries.")
end play_game
start_up = proc ()
po: stream := stream$primary_output()
d: date := now()
random$seed(d.second + 60*(d.minute + 60*d.hour))
stream$putl(po, "Guess the number\n----- --- ------\n")
min, max: int := read_limits()
secret: int := min + random$next(max - min + 1)
play_game(min, max, secret)
end start_up

View file

@ -0,0 +1,30 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. Guess-With-Feedback.
DATA DIVISION.
LOCAL-STORAGE SECTION.
01 Seed PIC 9(8).
01 Random-Num PIC 99.
01 Guess PIC 99.
PROCEDURE DIVISION.
ACCEPT Seed FROM TIME
COMPUTE Random-Num =
FUNCTION REM(FUNCTION RANDOM(Seed) * 1000, 10) + 1
DISPLAY "Guess a number between 1 and 10:"
PERFORM FOREVER
ACCEPT Guess
IF Guess > Random-Num
DISPLAY "Your guess was too high."
ELSE IF Guess < Random-Num
DISPLAY "Your guess was too low."
ELSE
DISPLAY "Well guessed!"
EXIT PERFORM
END-PERFORM
GOBACK
.

View file

@ -0,0 +1,37 @@
import ceylon.random {
DefaultRandom
}
shared void run() {
value random = DefaultRandom();
value range = 1..10;
while(true) {
value chosen = random.nextElement(range);
print("I have chosen a number between ``range.first`` and ``range.last``.
What is your guess?");
while(true) {
if(exists line = process.readLine()) {
value guess = Integer.parse(line.trimmed);
if(is ParseException guess) {
print(guess.message);
continue;
}
switch(guess <=> chosen)
case (larger) {
print("Too high!");
}
case (smaller) {
print("Too low!");
}
case (equal) {
print("You got it!");
break;
}
} else {
print("Please enter a number!");
}
}
}
}

View file

@ -0,0 +1,16 @@
(defn guess-run []
(let [start 1
end 100
target (+ start (rand-int (inc (- end start))))]
(printf "Guess a number between %d and %d" start end)
(loop [i 1]
(printf "Your guess %d:\n" i)
(let [ans (read)]
(if (cond
(not (number? ans)) (println "Invalid format")
(or (< ans start) (> ans end)) (println "Out of range")
(< ans target) (println "too low")
(> ans target) (println "too high")
:else true)
(println "Correct")
(recur (inc i)))))))

View file

@ -0,0 +1,16 @@
(defun guess-the-number-feedback (&optional (min 1) (max 100))
(let ((num-guesses 0)
(num (+ (random (1+ (- max min))) min))
(guess nil))
(format t "Try to guess a number from ~:d to ~:d!~%" min max)
(loop do (format t "Guess? ")
(incf num-guesses)
(setf guess (read))
(format t "Your guess is ~[not a number.~;too small.~;too large.~;correct!~]~%"
(cond ((not (numberp guess)) 0)
((< guess num) 1)
((> guess num) 2)
((= guess num) 3)))
until (and (numberp guess)
(= guess num)))
(format t "You got the number correct on the ~:r guess!~%" num-guesses)))

View file

@ -0,0 +1,23 @@
let n = int(rnd * 100) + 1
do
let t = t + 1
input "guess the number between 1 and 100", g
if g < n then
alert "guess higher"
endif
if g > n then
alert "guess lower"
endif
loop g <> n
alert "you guessed the number in ", t, " tries"

View file

@ -0,0 +1,19 @@
number = rand(1..10)
puts "Guess the number between 1 and 10"
loop do
begin
user_number = gets.to_s.to_i
if user_number == number
puts "You guessed it."
break
elsif user_number > number
puts "Too high."
else
puts "Too low."
end
rescue ArgumentError
puts "Please enter an integer."
end
end

View file

@ -0,0 +1,31 @@
import std.stdio, std.random, std.typecons, std.conv, std.string,
std.range;
void main() {
immutable interval = tuple(1, 100);
writefln("Guess my target number that is between " ~
"%d and %d (inclusive).\n", interval[]);
immutable target = uniform!"[]"(interval[]);
foreach (immutable i; sequence!q{n}) {
writef("Your guess #%d: ", i + 1);
immutable txt = stdin.readln.strip;
Nullable!int answer;
try {
answer = txt.to!int;
} catch (ConvException e) {
writefln(" I don't understand your input '%s'", txt);
continue;
}
if (answer < interval[0] || answer > interval[1]) {
writeln(" Out of range!");
continue;
}
if (answer == target) {
writeln(" Well guessed.");
break;
}
writeln(answer < target ? " Too low." : " Too high.");
}
}

View file

@ -0,0 +1,15 @@
$ rnd = f$extract( 21, 2, f$time() )
$ count = 0
$ loop:
$ inquire guess "guess what number between 0 and 99 inclusive I am thinking of"
$ guess = f$integer( guess )
$ if guess .lt. 0 .or. guess .gt. 99
$ then
$ write sys$output "out of range"
$ goto loop
$ endif
$ count = count + 1
$ if guess .lt. rnd then $ write sys$output "too small"
$ if guess .gt. rnd then $ write sys$output "too large"
$ if guess .ne. rnd then $ goto loop
$ write sys$output "it only took you ", count, " guesses"

View file

@ -0,0 +1,85 @@
program GuessTheNumber;
{$APPTYPE CONSOLE}
uses
SysUtils,
Math;
const
// Set min/max limits
min: Integer = 1;
max: Integer = 10;
var
last,
val,
inp: Integer;
s: string;
// Initialise new game
procedure NewGame;
begin
// Make sure this number isn't the same as the last one
repeat
val := RandomRange(min,max);
until
val <> last;
// Save this number
last := val;
Writeln('Guess a number between ', min, ' and ', max, ' [Answer = ', val, ']');
end;
begin
// Initialise the random number generator with a random value
Randomize;
// Initialise last number
last := 0;
// Initialise user input
s := '';
// Start game
NewGame;
// Loop
repeat
// User input
Readln(s);
// Validate - checxk if input is a number
if TryStrToInt(s,inp) then
begin
// Is it the right number?
if (inp = val) then
begin
// Yes - request a new game
Writeln('Correct! Another go? Y/N');
Readln(s);
if SameText(s,'Y') then
// Start new game
NewGame
else
Exit;
end
else
// Input too low/high
if (inp < val) then
Writeln('Too low! Try again...')
else
if (inp > val) then
Writeln('Too high! Try again...');
end
else
// Input invalid
if not SameText(s,'bored') then
Writeln('Invalid input! Try again...');
until
SameText(s,'bored');
end.

View file

@ -0,0 +1,15 @@
print "Guess a number between 1 and 100!"
n = random 100
repeat
g = number input
write g
if error = 1
print "You must enter a number!"
elif g > n
print " is too high"
elif g < n
print " is too low"
.
until g = n
.
print " is correct"

View file

@ -0,0 +1,17 @@
;;(read <default-value> <prompt>) prompts the user with a default value using the browser dialog box.
;; we play sounds to make this look like an arcade game
(lib 'web) ; (play-sound) is defined in web.lib
(define (guess-feed (msg " 🔮 Enter a number in [0...100], -1 to stop.") (n (random 100)) (user 0))
(set! user (read user msg))
(play-sound 'ko)
(unless (eq? n user ) ; user is the last user answer
(guess-feed
(cond ;; adapt prompt according to condition
((not (integer? user)) "❌ Please, enter an integer")
(( < user 0) (error "🌵 - It was:" n)) ; exit to top level
((> n user) "Too low ...")
((< n user) "Too high ..."))
n user))
(play-sound 'ok )
" 🔮 Well played!! 🍒 🍇 🍓")

View file

@ -0,0 +1,36 @@
open string datetime random core monad io
guess () = do
putStrLn "What's the upper bound?"
ub <- readAny
main ub
where main ub
| ub < 0 = "Bound should be greater than 0."
| else = do
putStrLn $ format "Guess a number from 1 to {0}" ub
dt <- datetime.now
guesser (rnd (milliseconds $ dt) 1 ub)
guesser v = do
x <- readAny
if x == v then
cont ()
else if x < v then
do putStrLn "Too small!"
guesser v
else
do putStrLn "Too big!"
guesser v
cont () = do
putStrLn "Correct! Do you wish to continue (Y/N)?"
ask ()
ask () = do
a <- readStr
if a == "y" || a == "Y" then
guess ()
else if a == "n" || a == "N" then
do putStrLn "Bye!"
else
do putStrLn "Say what?"
ask ()
guess () ::: IO

View file

@ -0,0 +1,26 @@
import extensions;
public program()
{
int randomNumber := randomGenerator.eval(1,10);
console.printLine("I'm thinking of a number between 1 and 10. Can you guess it?");
bool numberCorrect := false;
until(numberCorrect)
{
console.print("Guess: ");
int userGuess := console.readLine().toInt();
if (randomNumber == userGuess)
{
numberCorrect := true;
console.printLine("Congrats!! You guessed right!")
}
else if (randomNumber < userGuess)
{
console.printLine("Your guess was too high")
}
else
{
console.printLine("Your guess was too low")
}
}
}

View file

@ -0,0 +1,20 @@
defmodule GuessingGame do
def play(lower, upper) do
play(lower, upper, Enum.random(lower .. upper))
end
defp play(lower, upper, number) do
guess = Integer.parse(IO.gets "Guess a number (#{lower}-#{upper}): ")
case guess do
{^number, _} ->
IO.puts "Well guessed!"
{n, _} when n in lower..upper ->
IO.puts if n > number, do: "Too high.", else: "Too low."
play(lower, upper, number)
_ ->
IO.puts "Guess not in valid range."
play(lower, upper, number)
end
end
end
GuessingGame.play(1, 100)

View file

@ -0,0 +1,15 @@
(let* ((min 1)
(max 100)
(number (+ (random (1+ (- max min))) min))
guess done)
(message "Guess the number between %d and %d" min max)
(while (not done)
(setq guess (read-number "Please enter a number "))
(cond
((< guess number)
(message "Too low!"))
((> guess number)
(message "Too high!"))
((= guess number)
(setq done t)
(message "Well guessed!")))))

View file

@ -0,0 +1,27 @@
% Implemented by Arjun Sunel
-module(guess_number).
-export([main/0]).
main() ->
L = 1 , % Lower Limit
U = 100, % Upper Limit
io:fwrite("Guess my number between ~p and ", [L]),
io:fwrite("and ~p until you get it right.\n", [U]),
N = random:uniform(100),
guess(N).
guess(N) ->
{ok, [K]} = io:fread("Guess the number : ","~d"),
if
K=:=N ->
io:format("Well guessed!!\n");
true ->
if
K > N ->
io:format("Your guess is too high.\n");
true ->
io:format("Your guess is too low.\n")
end,
guess(N)
end.

View file

@ -0,0 +1,19 @@
include get.e
constant lower_limit = 0, upper_limit = 100
integer number, guess
number = rand(upper_limit-lower_limit+1)+lower_limit
printf(1,"Guess the number between %d and %d: ", lower_limit & upper_limit)
while 1 do
guess = floor(prompt_number("", lower_limit & upper_limit))
if number = guess then
puts(1,"You guessed correctly!\n")
exit
elsif number < guess then
puts(1,"You guessed too high.\nTry again: ")
else
puts(1,"You guessed to low.\nTry again: ")
end if
end while

View file

@ -0,0 +1,30 @@
open System
[<EntryPoint>]
let main argv =
let aim =
let from = 1
let upto = 100
let rnd = System.Random()
Console.WriteLine("Hi, you have to guess a number between {0} and {1}",from,upto)
rnd.Next(from,upto)
let mutable correct = false
while not correct do
let guess =
Console.WriteLine("Please enter your guess:")
match System.Int32.TryParse(Console.ReadLine()) with
| true, number -> Some(number)
| false,_ -> None
match guess with
| Some(number) ->
match number with
| number when number > aim -> Console.WriteLine("You guessed to high!")
| number when number < aim -> Console.WriteLine("You guessed to low!")
| _ -> Console.WriteLine("You guessed right!")
correct <- true
| None -> Console.WriteLine("Error: You didn't entered a parsable number!")
0

View file

@ -0,0 +1,15 @@
01.01 S T=0
01.02 A "LOWER LIMIT",L
01.03 A "UPPER LIMIT",H
01.04 I (H-L)1.05,1.05,1.06
01.05 T "INVALID RANGE",!;G 1.02
01.06 S S=FITR(L+FRAN()*(H-L+1))
01.10 A "GUESS",G
01.11 I (H-G)1.13,1.12,1.12
01.12 I (G-L)1.13,1.14,1.14
01.13 T "OUT OF RANGE",!;G 1.1
01.14 S T=T+1
01.15 I (G-S)1.16,1.17,1.18
01.16 T "TOO LOW!",!;G 1.1
01.17 T "CORRECT! GUESSES",%4,T,!;Q
01.18 T "TOO HIGH!",!;G 1.1

View file

@ -0,0 +1,88 @@
rem Hilo number guessing game
rem compile with FTCBASIC to 704 bytes com program file
use time.inc
use random.inc
define try = 0, tries = 0, game = 0
gosub systemtime
let randseed = loworder
let randlimit = 100
do
gosub intro
gosub play
gosub continue
loop try = 0
end
sub intro
bell
cls
print "Hilo game"
crlf
return
sub play
gosub generaterand
+1 rand
0 tries
let game = 1
print "Guess the number between 1 and 100"
crlf
do
+1 tries
input try
crlf
if try = rand then
let game = 0
print "You guessed the number!"
print "Tries: " \
print tries
endif
if game = 1 then
if try > rand then
print "Try lower..."
endif
if try < rand then
print "Try higher..."
endif
endif
crlf
loop game = 1
return
sub continue
print "Enter 0 to play again or 1 to EXIT to DOS"
input try
return

View file

@ -0,0 +1,26 @@
USING:
formatting
fry
io
kernel
math math.parser math.ranges
prettyprint
random ;
IN: guessnumber
: game-step ( target -- ? )
readln string>number
[
2dup =
[ 2drop f "Correct!" ]
[ < "high" "low" ? "Guess too %s, try again." sprintf t swap ]
if
]
[ drop t "Invalid guess." ]
if* print flush ;
: main ( -- )
99 [1,b]
[ unparse "Number in range %s, your guess?\n" printf flush ]
[ random '[ _ game-step ] loop ]
bi ;

View file

@ -0,0 +1,36 @@
class Main
{
public static Void main ()
{
Int lowerLimit := 1
Int higherLimit := 100
Int target := (lowerLimit..higherLimit).random
Int guess
while (guess != target)
{
echo ("Enter a guess: ")
try
{
// read in a line of input, and try to interpret as an Int
guess = Env.cur.in.readLine.trim.toInt
if (guess == target)
{
echo ("Well guessed!")
}
else if (guess < target)
{
echo ("Failed - your guess is too small")
}
else // if (guess > target)
{
echo ("Failed - your guess is too large")
}
}
catch (Err e)
{
echo ("Your guess must be an integer")
}
}
}
}

View file

@ -0,0 +1,27 @@
program Guess_a_number
implicit none
integer, parameter :: limit = 100
integer :: guess, number
real :: rnum
write(*, "(a, i0, a)") "I have chosen a number between 1 and ", limit, &
" and you have to try to guess it."
write(*, "(a/)") "I will score your guess by indicating whether it is higher, lower or the same as that number"
call random_seed
call random_number(rnum)
number = rnum * limit + 1
do
write(*, "(a)", advance="no") "Enter quess: "
read*, guess
if(guess < number) then
write(*, "(a/)") "That is lower"
else if(guess > number) then
write(*, "(a/)") "That is higher"
else
write(*, "(a)") "That is correct"
exit
end if
end do
end program

View file

@ -0,0 +1,22 @@
' FB 1.05.0 Win64
Randomize
Dim n As Integer = Int(Rnd * 20) + 1
Dim guess As Integer
Print "Guess which number I've chosen in the range 1 to 20"
Print
Do
Input " Your guess : "; guess
If guess > n AndAlso guess <= 20 Then
Print "Your guess is higher than the chosen number, try again "
ElseIf guess = n Then
Print "Correct, well guessed!"
Exit Do
ElseIf guess < n AndAlso guess >= 1 Then
Print "Your guess is lower than the chosen number, try again"
Else
Print "Your guess is inappropriate, try again"
End If
Loop
End

View file

@ -0,0 +1,20 @@
// Guess a Number with feedback.
target = random[1,100] // Min and max are both inclusive for the random function
guess = 0
println["Welcome to guess a number! I've picked a number between 1 and 100. Try to guess it!"]
while guess != target
{
guessStr = input["What is your guess?"]
guess = parseInt[guessStr]
if guess == undef
{
println["$guessStr is not a valid guess. Please enter a number from 1 to 100."]
next
}
if guess < target
println["My number is higher than $guess."]
if guess > target
println["My number is lower than $guess."]
if guess == target
println["$guess is correct! Well guessed!"]
}

View file

@ -0,0 +1,24 @@
Public Sub Main()
Randomize
Dim guess As Integer, max As Integer = 20
Dim n As Integer = Int(Rnd * max) + 1
Print "Guess which number I've chosen in the range 1 to "; max; Chr(10)
Do
Print " Your guess : "
Input guess
If guess > n And guess <= 20 Then
Print "Your guess is higher than the chosen number, try again"
Else If guess = n Then
Print "Correct, well guessed!"
Break
Else If guess < n And guess >= 1 Then
Print "Your guess is lower than the chosen number, try again"
Else
Print "Your guess is inappropriate, try again"
End If
Loop
End

View file

@ -0,0 +1,51 @@
[indent=4]
/*
Number guessing with feedback, in Genie
from https://wiki.gnome.org/Projects/Genie/AdvancedSample
valac numberGuessing.gs
./numberGuessing
*/
class NumberGuessing
prop min:int
prop max:int
construct(m:int, n:int)
self.min = m
self.max = n
def start()
try_count:int = 0
number:int = Random.int_range(min, max)
stdout.printf("Welcome to Number Guessing!\n\n")
stdout.printf("I have thought up a number between %d and %d\n", min, max)
stdout.printf("which you have to guess. I will give hints as we go.\n\n")
while true
stdout.printf("Try #%d, ", ++try_count)
stdout.printf("please enter a number between %d and %d: ", min, max)
line:string? = stdin.read_line()
if line is null
stdout.printf("bailing...\n")
break
input:int64 = 0
unparsed:string = ""
converted:bool = int64.try_parse(line, out input, out unparsed)
if not converted or line is unparsed
stdout.printf("Sorry, input seems invalid\n")
continue
guess:int = (int)input
if number is guess
stdout.printf("Congratulations! You win.\n")
break
else
stdout.printf("Try again. The number in mind is %s than %d.\n",
number > guess ? "greater" : "less", guess)
init
var game = new NumberGuessing(1, 100)
game.start()

View file

@ -0,0 +1,29 @@
package main
import (
"fmt"
"math/rand"
"time"
)
const lower, upper = 1, 100
func main() {
fmt.Printf("Guess integer number from %d to %d: ", lower, upper)
rand.Seed(time.Now().Unix())
n := rand.Intn(upper-lower+1) + lower
for guess := n; ; {
switch _, err := fmt.Scan(&guess); {
case err != nil:
fmt.Println("\n", err, "So, bye.")
return
case guess < n:
fmt.Print("Too low. Try again: ")
case guess > n:
fmt.Print("Too high. Try again: ")
default:
fmt.Println("Well guessed!")
return
}
}
}

View file

@ -0,0 +1,20 @@
def rand = new Random() // java.util.Random
def range = 1..100 // Range (inclusive)
def number = rand.nextInt(range.size()) + range.from // get a random number in the range
println "The number is in ${range.toString()}" // print the range
def guess
while (guess != number) { // keep running until correct guess
try {
print 'Guess the number: '
guess = System.in.newReader().readLine() as int // read the guess in as int
switch (guess) { // check the guess against number
case { it < number }: println 'Your guess is too low'; break
case { it > number }: println 'Your guess is too high'; break
default: println 'Your guess is spot on!'; break
}
} catch (NumberFormatException ignored) { // catches all input that is not a number
println 'Please enter a number!'
}
}

View file

@ -0,0 +1,15 @@
The number is in 1..100
Guess the number: ghfvkghj
Please enter a number!
Guess the number: 50
Your guess is too low
Guess the number: 75
Your guess is too low
Guess the number: 83
Your guess is too low
Guess the number: 90
Your guess is too low
Guess the number: 95
Your guess is too high
Guess the number: 92
Your guess is spot on!

View file

@ -0,0 +1,23 @@
import Control.Monad
import System.Random
-- Repeat the action until the predicate is true.
until_ act pred = act >>= pred >>= flip unless (until_ act pred)
answerIs ans guess =
case compare ans guess of
LT -> putStrLn "Too high. Guess again." >> return False
EQ -> putStrLn "You got it!" >> return True
GT -> putStrLn "Too low. Guess again." >> return False
-- Repeatedly read until the input *starts* with a number. (Since
-- we use "reads" we allow garbage to follow it, though.)
ask = do line <- getLine
case reads line of
((num,_):_) -> return num
otherwise -> putStrLn "Please enter a number." >> ask
main = do
ans <- randomRIO (1,100) :: IO Int
putStrLn "Try to guess my secret number between 1 and 100."
ask `until_` answerIs ans

View file

@ -0,0 +1,20 @@
U8 n, *g;
U8 min = 1, max = 100;
n = min + RandU16 % max;
Print("Guess the number between %d and %d: ", min, max);
while(1) {
g = GetStr;
if (Str2I64(g) == n) {
Print("You guessed correctly!\n");
break;
}
if (Str2I64(g) < n)
Print("Your guess was too low.\nTry again: ");
if (Str2I64(g) > n)
Print("Your guess was too high.\nTry again: ");
}

View file

@ -0,0 +1,17 @@
100 PROGRAM "Guess.bas"
110 RANDOMIZE
120 LET UP=10:LET LO=1 ! Limits
130 PRINT "I'm thinking of a number between";LO;"and";UP
140 LET COUNT=0:LET NR=RND(UP-LO+1)+LO
150 DO
160 LET COUNT=COUNT+1
170 INPUT PROMPT "Guess a number: ":GU
180 SELECT CASE GU
190 CASE IS>NR
200 PRINT "My number is lower that."
210 CASE IS<NR
220 PRINT "My number is higher that."
230 CASE ELSE
240 PRINT "Well guessed! Numner of tips:";COUNT
250 END SELECT
260 LOOP UNTIL NR=GU

View file

@ -0,0 +1,20 @@
procedure main()
smallest := 5
highest := 25
n := smallest-1 + ?(1+highest-smallest)
repeat {
writes("Pick a number from ", smallest, " through ", highest, ": ")
guess := read ()
if n = numeric(guess)
then {
write ("Well guessed!")
exit ()
}
else if n < numeric(guess)
then write ("Your guess is too high")
else if n > numeric(guess)
then write ("Your guess is too low")
else write ("Did you enter a number?")
}
end

View file

@ -0,0 +1,11 @@
require 'misc'
game=: verb define
assert. y -: 1 >. <.{.y
n=: 1 + ?y
smoutput 'Guess my integer, which is bounded by 1 and ',":y
whilst. -. x -: n do.
x=. {. 0 ". prompt 'Guess: '
if. 0 -: x do. 'Giving up.' return. end.
smoutput (*x-n){::'You win.';'Too high.';'Too low.'
end.
)

View file

@ -0,0 +1,12 @@
game 100
Guess my integer, which is bounded by 1 and 100
Guess: 64
Too high.
Guess: 32
Too low.
Guess: 48
Too high.
Guess: 40
Too low.
Guess: 44
You win.

View file

@ -0,0 +1,28 @@
import java.util.Random;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
Random random = new Random();
long from = 1;
long to = 100;
int randomNumber = random.nextInt(to - from + 1) + from;
int guessedNumber = 0;
System.out.printf("The number is between %d and %d.\n", from, to);
do
{
System.out.print("Guess what the number is: ");
guessedNumber = scan.nextInt();
if (guessedNumber > randomNumber)
System.out.println("Your guess is too high!");
else if (guessedNumber < randomNumber)
System.out.println("Your guess is too low!");
else
System.out.println("You got it!");
} while (guessedNumber != randomNumber);
}
}

View file

@ -0,0 +1,7 @@
<p>Pick a number between 1 and 100.</p>
<form id="guessNumber">
<input type="text" name="guess">
<input type="submit" value="Submit Guess">
</form>
<p id="output"></p>
<script type="text/javascript">

View file

@ -0,0 +1,21 @@
var number = Math.ceil(Math.random() * 100);
function verify() {
var guess = Number(this.elements.guess.value),
output = document.getElementById('output');
if (isNaN(guess)) {
output.innerHTML = 'Enter a number.';
} else if (number === guess) {
output.innerHTML = 'You guessed right!';
} else if (guess > 100) {
output.innerHTML = 'Your guess is out of the 1 to 100 range.';
} else if (guess > number) {
output.innerHTML = 'Your guess is too high.';
} else if (guess < number) {
output.innerHTML = 'Your guess is too low.';
}
return false;
}
document.getElementById('guessNumber').onsubmit = verify;

View file

@ -0,0 +1,44 @@
#!/usr/bin/env js
function main() {
guessTheNumber(1, 100);
}
function guessTheNumber(low, high) {
var num = randOnRange(low, high);
var guessCount = 0;
function checkGuess(n) {
if (n < low || n > high) {
print('That number is not between ' + low + ' and ' + high + '!');
return false;
}
if (n == num) {
print('You got it in ' + String(guessCount) + ' tries.');
return true;
}
if (n < num) {
print('Too low.');
} else {
print('Too high.');
}
return false;
}
print('I have picked a number between ' + low + ' and ' + high + '. Try to guess it!');
while (true) {
guessCount++;
putstr(" Your guess: ");
var n = parseInt(readline());
if (checkGuess(n)) break;
}
}
function randOnRange(low, high) {
var r = Math.random();
return Math.floor(r * (high - low + 1)) + low;
}
main();

View file

@ -0,0 +1,33 @@
# $min and $max can be specified on the command line but for illustrative purposes:
def minmax: [0, 20];
# low-entropy PRNG in range($a;$b) i.e. $a <= prng < $b
# (no checking)
def prng($a;$b): $a + ((now * 1000000 | trunc) % ($b - $a) );
def play:
# extract a number if possible
def str2num:
try tonumber catch null;
minmax as [$min, $max]
| prng($min; $max) as $number
| "The computer has chosen a whole number between \($min) and \($max) inclusive.",
"Please guess the number or type q to quit:",
(label $out
| foreach inputs as $guess (null;
if $guess == "q" then null, break $out
else ($guess|str2num) as $g
| if $g == null or $g < 0 then "Please enter a non-negative integer or q to quit"
elif $g < $min or $g > $max then "That is out of range. Try again"
elif $g > $number then "Too high"
elif $g < $number then "Too low"
else true, break $out
end
end)
| if type == "string" then .
elif . == true then "Spot on!", "Let's start again.\n", play
else empty
end );
play

View file

@ -0,0 +1,15 @@
function guesswithfeedback(n::Integer)
number = rand(1:n)
print("I choose a number between 1 and $n\nYour guess? ")
while (guess = readline()) != dec(number)
if all(isdigit, guess)
print("Too ", parse(Int, guess) < number ? "small" : "big")
else
print("Enter an integer please")
end
print(", new guess? ")
end
println("You guessed right!")
end
guesswithfeedback(10)

View file

@ -0,0 +1,16 @@
import kotlin.random.Random
fun main() {
val n = 1 + rand.nextInt(20)
println("Guess which number I've chosen in the range 1 to 20\n")
while (true) {
print(" Your guess : ")
val guess = readLine()?.toInt()
when (guess) {
n -> { println("Correct, well guessed!") ; return }
in n + 1 .. 20 -> println("Your guess is higher than the chosen number, try again")
in 1 .. n - 1 -> println("Your guess is lower than the chosen number, try again")
else -> println("Your guess is inappropriate, try again")
}
}
}

View file

@ -0,0 +1,21 @@
(defmodule guessing-game
(export (main 0)))
(defun get-player-guess ()
(let (((tuple 'ok (list guessed)) (: io fread '"Guess number: " '"~d")))
guessed))
(defun check-guess (answer guessed)
(cond
((== answer guessed)
(: io format '"Well-guessed!!~n"))
((/= answer guessed)
(if (> answer guessed) (: io format '"Your guess is too low.~n"))
(if (< answer guessed) (: io format '"Your guess is too high.~n"))
(check-guess answer (get-player-guess)))))
(defun main ()
(: io format '"Guess the number I have chosen, between 1 and 10.~n")
(check-guess
(: random uniform 10)
(get-player-guess)))

View file

@ -0,0 +1,14 @@
> (slurp '"guessing-game.lfe")
#(ok guessing-game)
> (main)
Guess the number I have chosen, between 1 and 10.
Guess number: 10
Your guess is too high.
Guess number: 1
Your guess is too low.
Guess number: 5
Your guess is too low.
Guess number: 7
Well-guessed!!
ok
>

View file

@ -0,0 +1,21 @@
{def game
{def game.rec // recursive part
{lambda {:n :l :h}
{let { {:n :n} {:l :l} {:h :h} // :n, :l, :h redefined
{:g {round {/ {+ :l :h} 2}}}} // :g is the middle
{if {< :g :n}
then {br}:g too low!
{game.rec :n {+ :g 1} :h} // do it again higher
else {if {> :g :n}
then {br}:g too high!
{game.rec :n :l {- :g 1}} // do it again lower
else {br}{b :g Got it!} }} }}} // bingo!
{lambda {:n}
{let { {:n :n} // :n redefined
{:N {floor {* :n {random}}}}} // compute a random number
Find {b :N} between 0 and :n {game.rec :N 0 :n}
}}}
{game {pow 2 32}} // 2**32 = 4294967296

View file

@ -0,0 +1,33 @@
#!/usr/bin/lasso9
local(
lower = integer_random(10, 1),
higher = integer_random(100, 20),
number = integer_random(#higher, #lower),
status = false,
guess
)
// prompt for a number
stdout('Guess a number: ')
while(not #status) => {
#guess = null
// the following bits wait until the terminal gives you back a line of input
while(not #guess or #guess -> size == 0) => {
#guess = file_stdin -> readSomeBytes(1024, 1000)
}
#guess = integer(#guess)
if(not (range(#guess, #lower, #higher) == #guess)) => {
stdout('Input not of correct type or range. Guess a number: ')
else(#guess > #number)
stdout('That was to high, try again! ')
else(#guess < #number)
stdout('That was to low, try again! ')
else(#guess == #number)
stdout('Well guessed!')
#status = true
}
}

View file

@ -0,0 +1,16 @@
[start]
target = int( rnd( 1) * 100) +1
while 1
do
input "Guess a whole number between 1 and 100. To finish, type 'exit' "; b$
if b$ ="exit" then print "Thank you for playing!": end
c = val( b$)
ok =( c =int( c)) and ( c >=1) and ( c <=100)
if ok =0 then notice "Invalid data. Integers 1 to 100 only."
loop until ok <>0
if c =target then print " You guessed correctly.": print: goto [start]
if c <target then print " Your guess was too low."
if c >target then print " Your guess was too high."
wend

View file

@ -0,0 +1,29 @@
command guessTheNumber lowN highN
local tNumber, tguess, tmin, tmax
if lowN is empty or lowN < 1 then
put 1 into tmin
else
put lowN into tmin
end if
if highN is empty then
put 10 into tmax
else
put highN into tmax
end if
put random(tmax - tmin + 1) + tmin - 1 into tNumber
repeat until tguess is tNumber
ask question "Please enter a number between" && tmin && "and" && tmax titled "Guess the number"
if it is not empty then
put it into tguess
if tguess is tNumber then
answer "Well guessed!"
else if tguess < tNumber then
answer "too low"
else
answer "too high"
end if
else
exit repeat
end if
end repeat
end guessTheNumber

View file

@ -0,0 +1,4 @@
command testGuessNumber
guessTheNumber --defaults to 1-10
guessTheNumber 9,12
end testGuessNumber

View file

@ -0,0 +1,12 @@
10 CLS:RANDOMIZE TIME
20 PRINT "Please specify lower and upper limits":guess=0
30 INPUT " (must be positive integers) :", first, last
40 IF first<1 OR last<1 THEN 20
50 num=INT(RND*(last-first+1)+first)
60 WHILE num<>guess
70 INPUT "Your guess? ", guess
80 IF guess<num THEN PRINT "too small!"
90 IF guess>num THEN PRINT "too large!"
100 WEND
110 INPUT "That's correct! Another game (y/n)? ", yn$
120 IF yn$="y" THEN 20

View file

@ -0,0 +1,25 @@
to guess [:max 100]
local "number
make "number random :max
local "guesses
make "guesses 0
local "guess
forever [
(type [Guess my number! \(range 1 -\ ] :max "\):\ )
make "guess first readlist
ifelse (or (not numberp :guess) (lessp :guess 1) (greaterp :guess :max)) [
print sentence [Guess must be a number between 1 and] (word :max ".)
] [
make "guesses (:guesses + 1)
ifelse lessp :guess :number [
print [Too low!]
] [ifelse equalp :guess :number [
(print [You got it in] :guesses "guesses!)
stop
] [
print [Too high!]
]]
]
]
end

View file

@ -0,0 +1,22 @@
math.randomseed(os.time())
me_win=false
my_number=math.random(1,10)
while me_win==false do
print "Guess my number from 1 to 10:"
your_number = io.stdin:read'*l'
if type(tonumber(your_number))=="number" then
your_number=tonumber(your_number)
if your_number>10 or your_number<1 then
print "Your number was not between 1 and 10, try again."
elseif your_number>my_number then
print "Your number is greater than mine, try again."
elseif your_number<my_number then
print "Your number is smaller than mine, try again."
elseif your_number==my_number then
print "That was correct."
me_win=true
end
else
print "Your input was not a number, try again."
end
end

View file

@ -0,0 +1,27 @@
Module GuessNumber {
Read Min, Max
chosen = Random(Min, Max)
print "guess a whole number between ";Min;" and ";Max
do {
\\ we use guess so Input get integer value
\\ if we press enter without a number we get error
do {
\\ if we get error then we change line, checking the cursor position
If Pos>0 then Print
Try ok {
input "Enter your number " , guess%
}
} until ok
Select Case guess%
case min to chosen-1
print "Sorry, your number was too low"
case chosen+1 to max
print "Sorry, your number was too high"
case chosen
print "Well guessed!"
else case
print "That was an invalid number"
end select
} until guess% = chosen
}
GuessNumber 5, 15

View file

@ -0,0 +1,26 @@
function guess_a_number(low, high)
if nargin < 1 || ~isnumeric(low) || length(low) > 1 || isnan(low)
low = 1;
end;
if nargin < 2 || ~isnumeric(high) || length(high) > 1 || isnan(high)
high = low+9;
elseif low > high
[low, high] = deal(high, low);
end
n = floor(rand(1)*(high-low+1))+low;
gs = input(sprintf('Guess an integer between %i and %i (inclusive): ', low, high), 's');
while gs % No guess quits the game
g = str2double(gs);
if length(g) > 1 || isnan(g) || g < low || g > high
gs = input('Invalid input, guess again: ', 's');
elseif g < n
gs = input('Too low, guess again: ', 's');
elseif g > n
gs = input('Too high, guess again: ', 's');
else
disp('Good job, you win!')
gs = '';
end
end

View file

@ -0,0 +1,15 @@
Range = [1,100]
randomNumber = (random Range.x Range.y) as integer
clearListener()
while true do
(
userVal = getKBValue prompt:("Enter a number between "+(range[1] as integer) as string+" and "+(range[2] as integer) as string+": ")
if userVal == randomNumber do (format "\nWell guessed!\n"; exit with OK)
case of
(
(classOf userVal != classof randomNumber): (format "\nBad number!\n")
(userVal > Range[2] or userVal < Range[1]): (format "\nNumber out of range\n")
(userVal > randomNumber): (format "\nToo high!\n")
(userVal < randomNumber): (format "\nToo low!\n")
)
)

View file

@ -0,0 +1,13 @@
Enter a number between 1 and 100: 5
Too low!
Enter a number between 1 and 100: 9.0
Bad number!
Enter a number between 1 and 100: 145
Number out of range
Enter a number between 1 and 100: 95
Too low!
Enter a number between 1 and 100: 99
Too high!
Enter a number between 1 and 100: 97
Well guessed!
OK

View file

@ -0,0 +1,17 @@
GuessANumber := proc(low, high)
local number, input;
randomize():
printf( "Guess a number between %d and %d:\n:> ", low, high );
number := rand(low..high)();
do
input := parse(readline());
if input > number then
printf("Too high, try again!\n:> ");
elif input < number then
printf("Too low, try again!\n:> ");
else
printf("Well guessed! The answer was %d.\n", number);
break;
end if;
end do:
end proc:

View file

@ -0,0 +1 @@
GuessANumber(2,5);

View file

@ -0,0 +1,10 @@
guessnumber[min_, max_] :=
Module[{number = RandomInteger[{min, max}], guess},
While[guess =!= number,
guess = Input[
If[guess > number, "Too high.Guess again.",
"Too low.Guess again.",
"Guess a number between " <> ToString@min <> " and " <>
ToString@max <> "."]]];
CreateDialog[{"Well guessed!", DefaultButton[]}]];
guessnumber[1, 10]

View file

@ -0,0 +1,27 @@
100 RANDOMIZE
110 LET T = 0
120 LET N = 20
130 LET R = INT(RND *N)+1
140 PRINT "GUESS A WHOLE NUMBER BETWEEN 1 AND";N
150 REM LOOP
160 LET T = T+1
170 PRINT "ENTER YOUR NUMBER ";
180 INPUT G
190 IF G <> R THEN 220
200 PRINT "YOU GUESSED IT IN";T;"TRIES."
210 GOTO 360
220 REM ENDIF
230 IF G > R THEN 260
240 IF G < 1 THEN 260
250 PRINT "SORRY, YOUR NUMBER WAS TOO LOW"
260 REM ENDIF
270 IF G < R THEN 300
280 IF G > 100 THEN 300
290 PRINT "SORRY, YOUR NUMBER WAS TOO HIGH"
300 REM ENDIF
310 IF G >= 1 THEN 320
320 IF G <= 100 THEN 340
330 PRINT "THAT WAS AN INVALID NUMBER"
340 REM ENDIF
350 IF G <> R THEN 150
360 END

View file

@ -0,0 +1,26 @@
def getInput:int
s = System.console.readLine()
Integer.parseInt(s)
end
number = int(Math.random() * 10 + 1)
puts "Guess the number between 1 and 10"
guessed = false
while !guessed do
begin
userNumber = getInput
if userNumber == number
guessed = true
puts "You guessed it."
elsif userNumber > number
puts "Too high."
else
puts "Too low."
end
rescue NumberFormatException => e
puts "Please enter an integer."
end
end

View file

@ -0,0 +1,40 @@
MODULE guessf;
IMPORT InOut, Random, NumConv, Strings;
VAR number, guess : CARDINAL;
input : Strings.String;
OK, Done : BOOLEAN;
BEGIN
number := Random.nr (1000);
InOut.WriteString ("I have chosen a number below 1000; please try to guess it.");
InOut.WriteLn;
REPEAT
REPEAT
InOut.WriteString ("Enter your guess : "); InOut.WriteBf;
InOut.ReadString (input);
NumConv.Str2Num (guess, 10, input, OK);
IF NOT OK THEN
InOut.WriteString (input);
InOut.WriteString (" is not a valid number...");
InOut.WriteLn
END
UNTIL OK;
InOut.WriteString ("Your guess is ");
IF number = guess THEN
Done := TRUE;
InOut.WriteString ("spot on!")
ELSE
Done := FALSE;
IF guess > number THEN
InOut.WriteString ("too high.")
ELSE
InOut.WriteString ("too low.")
END
END;
InOut.WriteLn
UNTIL Done;
InOut.WriteString ("Thank you for playing; have a nice day!");
InOut.WriteLn
END guessf.

View file

@ -0,0 +1,5 @@
10 NUMBER=RND(10)+1
20 INPUT "I'M THINKING OF A NUMBER BETWEEN 1 AND 10. WHAT IS IT? ",GUESS
30 IF GUESS>NUMBER THEN PRINT "MY NUMBER IS LOWER THAN THAT.": GOTO 20
40 IF GUESS<NUMBER THEN PRINT "MY NUMBER IS HIGHER THAN THAT.": GOTO 20
50 PRINT "THAT'S THE CORRECT NUMBER."

View file

@ -0,0 +1,37 @@
import Nanoquery.Util
random = new(Random)
inclusive_range = {1, 100}
print format("Guess my target number that is between %d and %d (inclusive).\n",\
inclusive_range[0], inclusive_range[1])
target = random.getInt(inclusive_range[1]) + inclusive_range[0]
answer = 0
i = 0
while answer != target
i += 1
print format("Your guess(%d): ", i)
txt = input()
valid = true
try
answer = int(txt)
catch
println format(" I don't understand you input of '%s' ?", txt)
value = false
end
if valid
if (answer < inclusive_range[0]) or (answer > inclusive_range[1])
println " Out of range!"
else if answer = target
println " Ye-Haw!!"
else if answer < target
println " Too low."
else if answer > target
println " Too high."
end
end
end
println "\nThanks for playing."

View file

@ -0,0 +1,27 @@
using System;
using System.Console;
module GuessHints
{
Main() : void
{
def rand = Random();
def secret = rand.Next(1, 101);
mutable guess = 0;
def GetGuess() : int {Int32.Parse(ReadLine())}
WriteLine("Guess a number between 1 and 100:");
do
{
guess = GetGuess();
match(guess.CompareTo(secret))
{
|(-1) => WriteLine("Too low! Guess again:")
|1 => WriteLine("Too high! Guess again:")
|0 => WriteLine("Well guessed!")
}
} while (guess != secret)
}
}

View file

@ -0,0 +1,62 @@
/* NetRexx */
options replace format comments java crossref symbols nobinary
parse arg lo hi .
if lo = '' | lo = '.' then lo = 1
if hi = '' | hi = '.' then hi = 100
if lo > hi then parse (hi lo) lo hi -- make sure lo is < hi
rg = Random()
tries = 0
guessThis = rg.nextInt(hi - lo) + lo
say
say 'Rules: Guess a number between' lo 'and' hi
say ' Use QUIT or . to stop the game'
say ' Use TELL to get the game to tell you the answer.'
say
say 'Starting...'
say
loop label g_ forever
say 'Try guessing a number between' lo 'and' hi
parse ask guess .
select
when guess.upper = 'QUIT' | guess = '.' then do
say 'You asked to leave the game. Goodbye...'
leave g_
end
when guess.upper = 'TELL' | guess = '.' then do
say 'The number you were looking for is' guessThis
end
when \guess.datatype('w') then do
say guess 'is not a whole number. Try again.'
end
when guess = guessThis then do
tries = tries + 1
say 'Well guessed!' guess 'is the correct number.'
say 'It took you' tries 'tries.'
leave g_
end
when guess < lo then do
tries = tries + 1
say guess 'is below the lower limit of' lo
end
when guess > hi then do
tries = tries + 1
say guess 'is above the upper limit of' hi
end
when guess < guessThis then do
tries = tries + 1
say guess 'is too low. Try again.'
end
when guess > guessThis then do
tries = tries + 1
say guess 'is too high. Try again.'
end
otherwise do
say guess 'is an unexpected value.'
end
end
end g_
return

View file

@ -0,0 +1,28 @@
; guess-number-feedback.lsp
; oofoe 2012-01-19
; http://rosettacode.org/wiki/Guess_the_number/With_feedback
(seed (time-of-day)) ; Initialize random number generator from clock.
(setq low -5
high 62
number (+ low (rand (- high low)))
found nil
)
(print "I'm thinking of a number between " low " and " high ".")
(while (not found)
(print " What's your guess? ")
(setq guess (int (read-line) 'bad))
(print (cond ((= 'bad guess) "That's not a number! Try again!")
((or (< guess low) (> guess high))
(string "My number is between " low
" and " high ". Try again!"))
((< number guess) "Try a little lower...")
((> number guess) "Maybe a bit higher...")
((= number guess) (setq found true) "Exactly right!")))
)
(println "\nWell guessed! Congratulations!")
(exit)

View file

@ -0,0 +1,23 @@
import random, strutils
randomize()
let iRange = 1..100
echo "Guess my target number that is between ", iRange.a, " and ", iRange.b, " (inclusive)."
let target = rand(iRange)
var answer, i = 0
while answer != target:
inc i
stdout.write "Your guess ", i, ": "
let txt = stdin.readLine()
try: answer = parseInt(txt)
except ValueError:
echo " I don't understand your input of '", txt, "'"
continue
if answer notin iRange: echo " Out of range!"
elif answer < target: echo " Too low."
elif answer > target: echo " Too high."
else: echo " Ye-Haw!!"
echo "Thanks for playing."

View file

@ -0,0 +1,36 @@
let rec _read_int() =
try read_int()
with _ ->
print_endline "Please give a cardinal numbers.";
(* TODO: what is the correct word? cipher, digit, figure or numeral? *)
_read_int() ;;
let () =
print_endline "Please give a set limits (two integers):";
let a = _read_int()
and b = _read_int() in
let a, b =
if a < b
then (a, b)
else (b, a)
in
Random.self_init();
let target = a + Random.int (b - a) in
Printf.printf "I have choosen a number between %d and %d\n%!" a b;
print_endline "Please guess it!";
let rec loop () =
let guess = _read_int() in
if guess = target then
begin
print_endline "The guess was equal to the target.\nCongratulation!";
exit 0
end;
if guess < a || guess > b then
print_endline "The input was inappropriate."
else if guess > target then
print_endline "The guess was higher than the target."
else if guess < target then
print_endline "The guess was less than the target.";
loop ()
in
loop ()

View file

@ -0,0 +1,34 @@
use IO;
bundle Default {
class GuessNumber {
function : Main(args : String[]) ~ Nil {
Guess();
}
function : native : Guess() ~ Nil {
done := false;
"Guess the number which is between 1 and 10 or 'n' to quite: "->PrintLine();
rand_num := (Float->Random() * 10.0)->As(Int) + 1;
while(done = false) {
guess := Console->ReadString();
number := guess->ToInt();
if(number <> 0) {
if(number <> rand_num) {
Console->Print("Your guess was too ")
->Print(number < rand_num ? "low" : "high")
->Print(".\nGuess again: ");
}
else {
"Hurray! You guessed correctly!"->PrintLine();
done := true;
};
}
else {
if(guess->StartsWith("q") | guess->StartsWith("Q")) {
done := true;
};
};
};
}
}
}

View file

@ -0,0 +1,27 @@
function guess_a_number(low,high)
% Guess a number (with feedback)
% http://rosettacode.org/wiki/Guess_the_number/With_feedback
if nargin<1,
low=1;
end;
if nargin<2,
high=10;
end;
n = floor(rand(1)*(high-low+1))+low;
[guess,state] = str2num(input(sprintf('Guess a number between %i and %i: ',low,high),'s'));
while (~state || guess~=n)
if guess < n,
g = input('to low, guess again: ','s');
[guess, state] = str2num(g);
elseif guess > n,
g = input('to high, guess again: ','s');
[guess, state] = str2num(g);
end;
while ~state
g = input('invalid input, guess again: ','s');
[guess, state] = str2num(g);
end
end
disp('Well guessed!')

View file

@ -0,0 +1,11 @@
import: console
: guessNumber(a, b)
| n g |
b a - rand a + 1- ->n
begin
"Guess a number between" . a . "and" . b . ":" .
while(System.Console askln asInteger dup -> g isNull) [ "Not a number " println ]
g n == ifTrue: [ "You found it !" .cr return ]
g n < ifTrue: [ "Less" ] else: [ "Greater" ] . "than the target" .cr
again ;

View file

@ -0,0 +1,26 @@
(import (otus random!))
(define from 0)
(define to 100)
(define number (+ from (rand! (+ from to 1))))
(let loop ()
(for-each display `("Pick a number from " ,from " through " ,to ": "))
(let ((guess (read)))
(cond
((not (number? guess))
(print "Not a number!")
(loop))
((or (< guess from)
(< to guess))
(print "Out of range!")
(loop))
((< guess number)
(print "Too low!")
(loop))
((> guess number)
(print "Too high!")
(loop))
((= guess number)
(print "Well guessed!")))))

View file

@ -0,0 +1,56 @@
/*REXX program that plays the guessing (the number) game. */
low=1 /*lower range for the guessing game.*/
high=100 /*upper range for the guessing game.*/
try=0 /*number of valid attempts. */
r=random(1,100) /*get a random number (low-->high). */
do forever
say
say "guess the number, it's between" low 'and' high '(inclusive)',
'or enter quit to end the game.'
say
pull g
say
g=space(g)
Select
When g='' then iterate
When g='QUIT' then exit
When g='?' then Do
Say 'The number you are looking for is' r
Iterate
End
When \datatype(g,'W') then do
call ser g "isn't a valid number"
iterate
end
When g<low then do
call ser g 'is below the lower limit of' low
iterate
end
When g>high then do
call ser g 'is above the higher limit of' high
iterate
end
When g=r then do
try=try+1
Leave
End
Otherwise Do
try=try+1
if g>r then what='high'
else what='low'
say 'your guess of' g 'is too' what'.'
end
end
end
say
tries='tries'
if try=1 then
say 'Congratulations!, you guessed the number in 1 try. Did you cheat?'
Else
say 'Congratulations!, you guessed the number in' try 'tries.'
say
exit
ser: say; say '*** error ! ***'; say arg(1); say; return

View file

@ -0,0 +1,15 @@
guess_the_number(N=10)={
a=random(N);
print("guess the number between 0 and "N);
for(x=1,N,
if(x>1,
if(b>a,
print("guess again lower")
,
print("guess again higher")
);
b=input();
if(b==a,break())
);
print("You guessed it correctly")
};

View file

@ -0,0 +1,50 @@
<?php
session_start();
if(isset($_SESSION['number']))
{
$number = $_SESSION['number'];
}
else
{
$_SESSION['number'] = rand(1,10);
}
if($_POST["guess"]){
$guess = htmlspecialchars($_POST['guess']);
echo $guess . "<br />";
if ($guess < $number)
{
echo "Your guess is too low";
}
elseif($guess > $number)
{
echo "Your guess is too high";
}
elseif($guess == $number)
{
echo "You got the correct number!";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Guess A Number</title>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF'] ?>" method="post" name="guess-a-number">
<label for="guess">Guess A Number:</label><br/ >
<input type="text" name="guess" />
<input name="number" type="hidden" value="<?= $number ?>" />
<input name="submit" type="submit" />
</form>
</body>
</html>

View file

@ -0,0 +1,19 @@
sub prompt {
my $prompt = shift;
while (1) {
print "\n", $prompt, ": ";
# type ^D, q, quit, quagmire, etc to quit
defined($_ = <STDIN>) and !/^\s*q/ or exit;
return $_ if /^\s*\d+\s*$/s;
$prompt = "Please give a non-negative integer";
}
}
my $tgt = int(rand prompt("Hola! Please tell me the upper bound") + 1);
my $tries = 1;
$tries++, print "You guessed too ", ($_ == -1 ? "high" : "low"), ".\n"
while ($_ = $tgt <=> prompt "Your guess");
print "Correct! You guessed it after $tries tries.\n";

Some files were not shown because too many files have changed in this diff Show more