GeeksforGeeks
a legtöbb geeks egy CS (Computer Science) háttér, gondolom, hogy a legelső projekt után csinál egy programozási nyelv. Itt lesz a legelső projekt, és az alapvető Egy, ebben a cikkben.
feladat: az alábbiakban a lépések:
- építsen egy szám kitaláló játékot, amelyben a felhasználó kiválaszt egy tartományt.
- tegyük fel, hogy a felhasználó kiválasztott egy tartományt, azaz A-tól B-ig, ahol A és B az egész számhoz tartozik.
- néhány véletlen egész lesz kiválasztva a rendszer, és a felhasználó kitalálni, hogy egész a minimális számú találgatások
elemzés:
magyarázat 1: Ha a felhasználó bemenetek tartomány, mondjuk 1-100. És fordító véletlenszerűen kiválasztott 42, mint az egész szám. Most pedig elindult a találgatás, így a felhasználó 50-et adott meg első tippként. A fordító azt mutatja: “próbáld újra! Túl magasra tippeltél”. Ez azt jelenti, hogy a véletlen szám (azaz 42) nem esik az 50-től 100-ig terjedő tartományba. Ezért fontos kitalálni a tartomány felét. Ismét a felhasználó kitalálja az 50 felét (meg tudná mondani, MIÉRT?). Tehát az 50 fele 25. A felhasználó a 25-öt adja meg második tippként. Ezúttal fordító megmutatja, ” próbálja újra! Túl kicsire tippeltél”. Ez azt jelenti, hogy a 25-nél kisebb egész számok (1-től 25-ig) haszontalanok. Most a felhasználói találgatás tartománya rövidebb, azaz 25-50. Intelligensen! A felhasználó kitalálta ennek a tartománynak a felét, így a felhasználó 37-et sejtett harmadik találgatásként. Ezúttal a fordító megmutatja a kimenetet: “próbáld újra! Túl kicsire tippeltél”. A felhasználó számára a találgatási tartomány minden egyes találgatással egyre kisebb. Most, a találgatás tartomány felhasználó 37-50, amelyre a felhasználó kitalálta 43, mint a / A negyedik találgatás. Ezúttal a fordító megjeleníti a kimenetet: “próbáld újra! Túl magasra tippeltél”. Tehát az új találgatási tartomány a felhasználók számára 37-től 43-ig terjed, amelyre ismét a felhasználó kitalálta ennek a tartománynak a felét, azaz 40-et ötödik találgatásaként. Ezúttal a fordító megmutatja a kimenetet: “próbáld újra! Túl kicsire tippeltél”. Így a találgatás még kisebb, hogy 41-43. Most pedig a felhasználó 41-et sejtett hatodik tippjeként. Ami rossz, és azt mutatja, kimenet “próbálja újra! Túl kicsire tippeltél”. Végül a felhasználó kitalálta a megfelelő számot, amely 42, mint a hetedik tippje.
összes találgatások száma = 7
magyarázat 2: Ha a felhasználói bemenetek tartománya, mondjuk 1-től 50-ig. És fordító véletlenszerűen kiválasztott 42, mint az egész szám. És most elkezdődött a találgatás. Tehát az 50 fele 25. A felhasználó 25-öt ír be első tippként. Ezúttal fordító megmutatja, ” próbálja újra! Túl kicsire tippeltél”. Ez azt jelenti, hogy a 25-nél kisebb egész számok (1-től 25-ig) haszontalanok. Most a felhasználói találgatás tartománya rövidebb, azaz 25-50. Intelligensen! A felhasználó kitalálta ennek a tartománynak a felét, így a felhasználó 37-et sejtett második találgatásként. Ezúttal a fordító megmutatja a kimenetet: “próbáld újra! Túl kicsire tippeltél”. A felhasználó számára a találgatási tartomány minden egyes találgatással egyre kisebb. Most, a találgatás tartomány felhasználó 37-50, amelyre a felhasználó kitalálta 43, mint a / A harmadik találgatás. Ezúttal a fordító megjeleníti a kimenetet: “próbáld újra! Túl magasra tippeltél”. Tehát az új találgatási tartomány a felhasználók számára 37-től 43-ig terjed, amelyre ismét a felhasználó kitalálta ennek a tartománynak a felét, azaz 40-et negyedik találgatásaként. Ezúttal a fordító megmutatja a kimenetet: “próbáld újra! Túl kicsire tippeltél”. Így a találgatás még kisebb, hogy 41-43. És most a felhasználó kitalálta a 41-et, mint ötödik tippjét. Ami rossz, és azt mutatja, kimenet “próbálja újra! Túl kicsire tippeltél”. Végül a felhasználó kitalálta a megfelelő számot, amely 42, mint hatodik tippje.
összes találgatások száma = 6
tehát a találgatások minimális száma a tartománytól függ. És a fordító kell számítani a minimális számú találgatás függ a tartomány, a saját. Ehhez van egy képlet:-
a találgatás minimális száma = log2 (felső határ-alsó határ + 1)
algoritmus: az alábbiakban bemutatjuk a lépéseket:
- a Felhasználó megadja a tartomány alsó és felső határát.
- a fordító véletlenszerű egész számot generál a tartomány között, és egy változóban tárolja a jövőbeni hivatkozásokhoz.
- az ismétlődő találgatáshoz egy while hurok inicializálódik.
- ha a felhasználó kitalálta a számot, amely nagyobb, mint egy véletlenszerűen kiválasztott szám, a felhasználó kap egy kimenetet ” próbálja újra! Kitalálta túl magas “
- Else ha a felhasználó kitalálta egy számot, amely kisebb, mint egy véletlenszerűen kiválasztott szám, a felhasználó kap egy kimenetet ” próbálja újra! Kitalálta túl kicsi ”
- és ha a felhasználó kitalálta a minimális számú találgatások, a felhasználó kap egy “gratulálok! “Kimenet.
- különben, ha a felhasználó nem találta ki az egész számot a találgatások minimális számában, akkor “jobb szerencsét fog kapni legközelebb!”kimenet.
az alábbiakban az algoritmus végrehajtása látható:
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;
}
kimenet: az alábbiakban a fenti Program kimenete látható
kimenet a találgatásokra