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ó:

Piton3

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!")



C

#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

cikk-címkék: