GeeksforGeeks
La mayoría de los geeks con formación en CS (Informática), piensan en su primer proyecto después de hacer un Lenguaje de Programación. Aquí, obtendrá su primer proyecto y el básico, en este artículo.
Tarea: A continuación se muestran los pasos:
- Construye un juego de adivinanzas de números, en el que el usuario selecciona un rango.
- Digamos que el usuario seleccionó un rango, es decir, de A a B, donde A y B pertenecen a un entero.
- El sistema seleccionará algún entero aleatorio y el usuario tendrá que adivinar ese entero en el número mínimo de conjeturas
Análisis:
Explicación 1: Si el rango de entradas del usuario, digamos de 1 a 100. Y el compilador seleccionó aleatoriamente 42 como el entero. Y ahora comenzó el juego de adivinanzas, por lo que el usuario ingresó 50 como su primera conjetura. El compilador muestra » ¡Inténtalo de nuevo! Adivinaste demasiado alto». Eso significa que el número aleatorio (es decir, 42) no cae en el rango de 50 a 100. Esa es la importancia de adivinar la mitad del rango. Y de nuevo, el usuario adivina la mitad de 50 (¿Podría decirme por qué?). Así que la mitad de 50 es 25. El usuario introduce 25 como su segunda suposición. Este compilador de tiempo mostrará, » ¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Eso significa que los enteros menores de 25 (de 1 a 25) son inútiles para ser adivinados. Ahora el rango para adivinar el usuario es más corto, es decir, de 25 a 50. ¡Inteligentemente! El usuario adivinó la mitad de este rango, de modo que, el usuario adivinó 37 como su tercera conjetura. Esta vez de nuevo, el compilador muestra la salida, » ¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Para el usuario, el rango de adivinanzas es cada vez más pequeño por cada conjetura. Ahora, el rango de adivinanzas para el usuario es de 37 a 50, para lo cual el usuario adivinó 43 como su cuarta adivinanza. Esta vez el compilador mostrará una salida » ¡Inténtalo de nuevo! Adivinaste demasiado alto». Por lo tanto, el nuevo rango de adivinanzas para los usuarios será de 37 a 43, de nuevo para el que el usuario adivinó la mitad de este rango, es decir, 40 como su quinta conjetura. Esta vez el compilador muestra la salida, » ¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Dejando la conjetura aún más pequeña, de 41 a 43. Y ahora el usuario adivinó 41 como su sexta conjetura. Que está mal y muestra la salida «¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Y finalmente, el Usuario adivinó el número correcto que es 42 como su séptima suposición.
Número total de conjeturas = 7
Explicación 2: Si el rango de entradas del usuario, digamos de 1 a 50. Y el compilador seleccionó aleatoriamente 42 como el entero. Y ahora empezó el juego de adivinanzas. Así que la mitad de 50 es 25. El usuario introduce 25 como su primera suposición. Este compilador de tiempo mostrará, » ¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Eso significa que los enteros menores de 25 (de 1 a 25) son inútiles para ser adivinados. Ahora el rango para adivinar el usuario es más corto, es decir, de 25 a 50. ¡Inteligentemente! El usuario adivinó la mitad de este rango, de modo que, el usuario adivinó 37 como su segunda conjetura. Esta vez de nuevo, el compilador muestra la salida, » ¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Para el usuario, el rango de adivinanzas es cada vez más pequeño por cada conjetura. Ahora, el rango de adivinanzas para el usuario es de 37 a 50, para lo cual el usuario adivinó 43 como su tercera adivinanza. Esta vez el compilador mostrará una salida » ¡Inténtalo de nuevo! Adivinaste demasiado alto». Por lo tanto, el nuevo rango de adivinanzas para los usuarios será de 37 a 43, de nuevo para el que el usuario adivinó la mitad de este rango, es decir, 40 como su cuarta conjetura. Esta vez el compilador muestra la salida, » ¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Dejando la conjetura aún más pequeña, de 41 a 43. Y ahora el usuario adivinó 41 como su quinta suposición. Que está mal y muestra la salida «¡Inténtalo de nuevo! Adivinaste que era demasiado pequeño». Y finalmente, el Usuario adivinó el número correcto que es 42 como su sexta suposición.
Número total de conjeturas = 6
Por lo tanto, el número mínimo de conjeturas depende del rango. Y el compilador debe calcular el número mínimo de conjeturas depende del rango, por sí solo. Para ello, tenemos una fórmula:-
Número mínimo de conjeturas = log2 – Límite superior-límite inferior+ 1)
Algoritmo: A continuación se muestran los pasos:
- El usuario ingresa el límite inferior y el límite superior del rango.
- El compilador genera un entero aleatorio entre el rango y lo almacena en una variable para futuras referencias.
- Para adivinanzas repetitivas, se inicializará un bucle while.
- Si el usuario adivina un número que es mayor que un número seleccionado aleatoriamente, el usuario obtiene una salida «¡Inténtalo de nuevo! Has adivinado demasiado alto »
- De lo contrario, Si el usuario adivina un número que es más pequeño que un número seleccionado al azar, el usuario obtiene una salida «¡Inténtalo de nuevo! Adivinaste demasiado pequeño «
- Y si el usuario adivinó en un número mínimo de adivinaciones, el usuario recibe un » ¡Felicitaciones! » Salida.
- De lo contrario, si el usuario no adivinó el entero en el número mínimo de conjeturas, obtendrá «¡Mejor Suerte la próxima vez!» salida.
A continuación se muestra la implementación del Algoritmo:
import
random
import
math
lower
=
int
(
input
(
"Enter Lower bound:- "
))
upper
=
int
(
input
(
"Enter Upper bound:- "
))
x
=
random.randint(lower, upper)
print
(
"\n\tYou've only "
,
round
(math.log(upper
-
lower
+
1
,
2
)),
" chances to guess the integer!\n"
)
count
=
0
while
count < math.log(upper
-
lower
+
1
,
2
):
count
+
=
1
guess
=
int
(
input
(
"Guess a number:- "
))
if
x
=
=
guess:
print
(
"Congratulations you did it in "
,
count,
" try"
)
break
elif
x > guess:
print
(
"You guessed too small!"
)
elif
x < guess:
print
(
"You Guessed too high!"
)
if
count >
=
math.log(upper
-
lower
+
1
,
2
):
print
(
"\nThe number is %d"
%
x)
print
(
"\tBetter Luck Next time!"
)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int
main()
{
int
number, guess, nguesses=1;
srand
(
time
(0));
number =
rand
()%100 + 1;
do
{
printf
(
"Guess the number between 1 to 100\n"
);
scanf
(
"%d"
, &guess);
if
(guess>number)
{
printf
(
"you guessed to high\n"
);
}
else
if
(guess<number)
{
printf
(
"you guessed too low\n"
);
}
else
{
printf
(
"You guessed the correct number"
);
printf
(
"attempts : %d\n"
, nguesses);
}
nguesses++;
}
while
(guess!=number);
return
0;
}
SALIDA: a Continuación es el resultado del Programa anterior
De SALIDA PARA EL JUEGO de ADIVINAR