GeeksforGeeks

Die meisten Geeks mit CS-Hintergrund (Informatik) denken an ihr allererstes Projekt nach einer Programmiersprache. Hier erhalten Sie Ihr erstes Projekt und das grundlegende in diesem Artikel.

Aufgabe: Unten sind die Schritte:

  • Erstellen Sie ein Zahlenratespiel, in dem der Benutzer einen Bereich auswählt.
  • Angenommen, der Benutzer hat einen Bereich ausgewählt, dh von A bis B , wobei A und B zu Integer gehören.
  • Eine zufällige Ganzzahl wird vom System ausgewählt und der Benutzer muss diese Ganzzahl in der minimalen Anzahl von Vermutungen erraten

Analyse:

Erklärung 1: Wenn die Benutzereingaben reichen, sagen wir von 1 bis 100. Und der Compiler wählte zufällig 42 als Ganzzahl aus. Und jetzt begann das Ratespiel, also gab der Benutzer 50 als seine erste Vermutung ein. Der Compiler zeigt „Versuchen Sie es erneut! Du hast zu hoch geraten“. Das bedeutet, dass die Zufallszahl (dh 42) nicht in den Bereich von 50 bis 100 fällt. Das ist die Wichtigkeit, die Hälfte des Bereichs zu erraten. Und wieder errät der Benutzer die Hälfte von 50 (Können Sie mir sagen, warum?). Die Hälfte von 50 ist also 25. Der Benutzer gibt 25 als seine zweite Vermutung ein. Diesmal zeigt der Compiler: „Versuchen Sie es erneut! Du hast zu klein geraten“. Das heißt, die ganzen Zahlen kleiner als 25 (von 1 bis 25) sind nutzlos zu erraten. Jetzt ist der Bereich für Benutzerraten kürzer, d. H. Von 25 bis 50. Intelligent! Der Benutzer hat die Hälfte dieses Bereichs erraten, sodass der Benutzer 37 als seine dritte Vermutung erraten hat. Diesmal zeigt der Compiler erneut die Ausgabe „Try Again! Du hast zu klein geraten“. Für den Benutzer wird der Ratebereich mit jeder Vermutung kleiner. Nun liegt der Ratebereich für den Benutzer zwischen 37 und 50, für den der Benutzer 43 als vierte Vermutung erraten hat. Diesmal zeigt der Compiler die Ausgabe „Try Again! Du hast zu hoch geraten“. Der neue Schätzbereich für Benutzer liegt also zwischen 37 und 43, für den der Benutzer wiederum die Hälfte dieses Bereichs erraten hat, dh 40 als seine fünfte Vermutung. Diesmal zeigt der Compiler die Ausgabe „Versuchen Sie es erneut! Du hast zu klein geraten“. Lassen Sie die Vermutung noch kleiner, so dass von 41 bis 43. Und jetzt hat der Benutzer 41 als seine sechste Vermutung erraten. Was falsch ist und die Ausgabe „Try Again! Du hast zu klein geraten“. Und schließlich hat der Benutzer die richtige Zahl erraten, die 42 als seine siebte Vermutung ist.

Gesamtzahl der Vermutungen = 7

Erklärung 2: Wenn die Benutzereingaben reichen, sagen wir von 1 bis 50. Und der Compiler wählte zufällig 42 als Ganzzahl aus. Und jetzt begann das Ratespiel. Die Hälfte von 50 ist also 25. Der Benutzer gibt 25 als seine erste Vermutung ein. Diesmal zeigt der Compiler: „Versuchen Sie es erneut! Du hast zu klein geraten“. Das heißt, die ganzen Zahlen kleiner als 25 (von 1 bis 25) sind nutzlos zu erraten. Jetzt ist der Bereich für Benutzerraten kürzer, d. H. Von 25 bis 50. Intelligent! Der Benutzer hat die Hälfte dieses Bereichs erraten, sodass der Benutzer 37 als zweite Vermutung erraten hat. Diesmal zeigt der Compiler erneut die Ausgabe „Try Again! Du hast zu klein geraten“. Für den Benutzer wird der Ratebereich mit jeder Vermutung kleiner. Jetzt liegt der Ratebereich für den Benutzer zwischen 37 und 50, für den der Benutzer 43 als seine dritte Vermutung erraten hat. Diesmal zeigt der Compiler die Ausgabe „Try Again! Du hast zu hoch geraten“. Der neue Schätzbereich für Benutzer liegt also zwischen 37 und 43, für den der Benutzer wiederum die Hälfte dieses Bereichs erraten hat, dh 40 als vierte Vermutung. Diesmal zeigt der Compiler die Ausgabe „Versuchen Sie es erneut! Du hast zu klein geraten“. Lassen Sie die Vermutung noch kleiner, so dass von 41 bis 43. Und jetzt hat der Benutzer 41 als seine fünfte Vermutung erraten. Was falsch ist und die Ausgabe „Try Again! Du hast zu klein geraten“. Und schließlich hat der Benutzer die richtige Zahl erraten, die 42 als seine sechste Vermutung ist.

Gesamtzahl der Vermutungen = 6

Die minimale Anzahl von Vermutungen hängt also vom Bereich ab. Und der Compiler muss die minimale Anzahl von Raten abhängig vom Bereich selbst berechnen. Dafür haben wir eine Formel:-

Mindestanzahl der Zeilen = log2 (Obere Grenze – untere Grenze + 1)

Algorithmus: Unten sind die Schritte:

  • Der Benutzer gibt die untere und obere Grenze des Bereichs ein.
  • Der Compiler generiert eine zufällige Ganzzahl zwischen dem Bereich und speichert sie in einer Variablen für zukünftige Referenzen.
  • Für wiederholtes Raten wird eine while-Schleife initialisiert.
  • Wenn der Benutzer eine Zahl erraten hat, die größer als eine zufällig ausgewählte Zahl ist, erhält der Benutzer die Ausgabe „Try Again! Sie haben zu hoch geraten“
  • Andernfalls, wenn der Benutzer eine Zahl erraten hat, die kleiner als eine zufällig ausgewählte Zahl ist, erhält der Benutzer eine Ausgabe „Versuchen Sie es erneut! Sie haben zu klein geraten“
  • Und wenn der Benutzer in einer minimalen Anzahl von Vermutungen erraten hat, erhält der Benutzer ein „Herzlichen Glückwunsch! “ Ausgabe.
  • Sonst, wenn der Benutzer die ganze Zahl in der minimalen Anzahl von Vermutungen nicht erraten hat, wird er / sie „Beim nächsten Mal mehr Glück haben!“ Ausgabe.

Unten ist die Implementierung des Algorithmus:

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



AUSGABE: Unten ist die Ausgabe des obigen Programms

AUSGABE FÜR DAS RATESPIEL

Artikel-Tags :