GeeksforGeeks

de flesta nördar från en CS (datavetenskap) bakgrund, tänk på deras allra första projekt efter att ha gjort ett programmeringsspråk. Här får du ditt allra första projekt och det grundläggande, i den här artikeln.

uppgift: nedan är stegen:

  • Bygg ett antal gissningsspel, där användaren väljer ett intervall.
  • låt oss säga att användaren valde ett intervall, dvs från A till B, där A och B tillhör heltal.
  • vissa slumpmässiga heltal kommer att väljas av systemet och användaren måste gissa det heltalet i det minsta antalet gissningar

analys:

Förklaring 1: om användarinmatningen varierar, låt oss säga från 1 till 100. Och kompilator slumpmässigt utvalda 42 som heltal. Och nu gissningslek började, så användaren in 50 som hans / hennes första gissning. Kompilatorn visar ”försök igen! Du gissade för högt”. Det betyder att slumptalet (dvs 42) inte faller i intervallet från 50 till 100. Det är vikten av att gissa hälften av intervallet. Och igen gissar användaren hälften av 50 (kan du berätta varför?). Så hälften av 50 är 25. Användaren går in 25 som hans / hennes andra gissning. Den här gången kompilatorn kommer att visa, ” försök igen! Du gissade för liten”. Det betyder att heltal mindre än 25 (Från 1 till 25) är värdelösa att gissa. Nu är intervallet för användargissning kortare, dvs från 25 till 50. Intelligent! Användaren gissade hälften av detta intervall, så att användaren gissade 37 som hans/hennes tredje gissning. Den här gången visar kompilatorn utmatningen, ” försök igen! Du gissade för liten”. För användaren blir gissningsområdet mindre av varje gissning. Nu är gissningsintervallet för användaren från 37 till 50, för vilken användaren gissade 43 som hans/hennes fjärde gissning. Den här gången kommer kompilatorn att visa en utgång ” försök igen! Du gissade för högt”. Så det nya gissningsområdet för användare kommer att vara från 37 till 43, igen för vilken användaren gissade hälften av detta intervall, det vill säga 40 som hans/hennes femte gissning. Den här gången visar kompilatorn utgången, ” försök igen! Du gissade för liten”. Lämnar gissningen ännu mindre så att från 41 till 43. Och nu gissade användaren 41 som hans / hennes sjätte gissning. Vilket är fel och visar utgång ” försök igen! Du gissade för liten”. Och slutligen gissade användaren rätt nummer som är 42 som hans / hennes sjunde gissning.

Totalt antal gissningar = 7

förklaring 2: Om användaren matar in intervall, låt oss säga från 1 till 50. Och kompilator slumpmässigt utvalda 42 som heltal. Och nu började gissningsspelet. Så hälften av 50 är 25. Användaren går in 25 som hans / hennes första gissning. Den här gången kompilatorn kommer att visa, ” försök igen! Du gissade för liten”. Det betyder att heltal mindre än 25 (Från 1 till 25) är värdelösa att gissa. Nu är intervallet för användargissning kortare, dvs från 25 till 50. Intelligent! Användaren gissade hälften av detta intervall, så att användaren gissade 37 som hans/hennes andra gissning. Den här gången visar kompilatorn utmatningen, ” försök igen! Du gissade för liten”. För användaren blir gissningsområdet mindre av varje gissning. Nu är gissningsintervallet för användaren från 37 till 50, för vilken användaren gissade 43 som hans/hennes tredje gissning. Den här gången kommer kompilatorn att visa en utgång ” försök igen! Du gissade för högt”. Så det nya gissningsområdet för användare kommer att vara från 37 till 43, igen för vilken användaren gissade hälften av detta intervall, det vill säga 40 som hans/hennes fjärde gissning. Den här gången visar kompilatorn utgången, ” försök igen! Du gissade för liten”. Lämnar gissningen ännu mindre så att från 41 till 43. Och nu gissade användaren 41 som hans / hennes femte gissning. Vilket är fel och visar utgång ” försök igen! Du gissade för liten”. Och slutligen gissade användaren rätt nummer som är 42 som hans / hennes sjätte gissning.

Totalt antal gissningar = 6

så det minsta antalet gissningar beror på intervall. Och kompilatorn måste beräkna det minsta antalet gissningar beror på intervallet, på egen hand. För detta har vi en formel:-

minsta antal gissningar = log2(övre gräns-nedre gräns + 1)

algoritm: nedan är stegen:

  • användaren matar in den nedre gränsen och övre gränsen för intervallet.
  • kompilatorn genererar ett slumpmässigt heltal mellan intervallet och lagrar det i en variabel för framtida referenser.
  • för repetitiv gissning kommer en While loop att initieras.
  • om användaren gissade ett nummer som är större än ett slumpmässigt valt nummer får användaren en utgång ”försök igen! Du gissade för högt ”
  • annars om användaren gissade ett nummer som är mindre än ett slumpmässigt valt nummer får användaren en utgång ”försök igen! Du gissade för liten ”
  • och om användaren gissade i ett minimum antal gissningar får användaren ett ”Grattis! ” Utgång.
  • annars om användaren inte gissade heltalet i det minsta antalet gissningar, kommer han/hon att få ”bättre lycka nästa gång!” utgång.

nedan är implementeringen av algoritmen:

Python3

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;
}



utgång: nedan är utgången från ovanstående Program

utgång för gissningslek

artikel Tags: