GeeksforGeeks
useimmat CS (Computer Science) – taustaiset nörtit ajattelevat ensimmäistä projektiaan ohjelmointikielen tekemisen jälkeen. Tässä, saat aivan ensimmäinen projekti ja perus yksi, tässä artikkelissa.
tehtävä: alla vaiheet:
- Rakenna Numeroarvopeli, jossa käyttäjä valitsee alueen.
- sanotaan, että käyttäjä valitsi A: sta B: hen alueen, jossa A ja B kuuluvat kokonaislukuun.
- jokin satunnainen kokonaisluku valitaan systeemillä ja käyttäjän on arvattava kyseinen kokonaisluku arvausten vähimmäismäärässä
analyysi:
selitys 1: Jos käyttäjän syötteet vaihtelevat, sanotaan 1: stä 100: aan. Ja kääntäjä satunnaisesti valittu 42 kuin kokonaisluku. Ja nyt alkoi arvauspeli, joten käyttäjä antoi 50 ensimmäiseksi arvauksekseen. Kääntäjä näyttää ”Try Again! Arvasit liian korkealle.” Se tarkoittaa satunnaisluku (eli, 42) ei kuulu välillä 50 ja 100. Se on tärkeää arvata puolet alueesta. Ja jälleen, käyttäjä arvaa puolet 50 (Voisitteko kertoa minulle miksi?). Puolet 50: stä on siis 25. Käyttäjä syöttää toiseksi arvauksekseen 25. Tällä kertaa kääntäjä näyttää, ” yritä uudelleen! Arvasit liian pieneksi”. Se tarkoittaa, että kokonaisluvut alle 25 (1: stä 25: een) ovat hyödyttömiä arvattavia. Nyt käyttäjän arvailujen vaihteluväli on lyhyempi eli 25: stä 50: een. Älykkäästi! Käyttäjä arvasi puolet tästä alueesta, niin että, käyttäjä arvasi 37 hänen / hänen kolmas arvaus. Tällä kertaa kääntäjä näyttää tulosteen, ” yritä uudelleen! Arvasit liian pieneksi”. Käyttäjälle arvausalue pienenee jokaisella arvauksella. Nyt käyttäjän arvausalue on 37-50, josta käyttäjä arvasi 43 neljänneksi arvauksekseen. Tällä kertaa kääntäjä näyttää tulosteen ” yritä uudelleen! Arvasit liian korkealle.” Käyttäjien Uusi arvausalue on siis 37: stä 43: een, jolle taas käyttäjä arvasi tämän alueen puoliskon, eli 40: n viidentenä arvauksenaan. Tällä kertaa kääntäjä näyttää tulosteen, ” yritä uudelleen! Arvasit liian pieneksi”. Jättäen arvaus vielä pienempi sellainen, että 41-43. Nyt käyttäjä arvasi kuudenneksi arvauksekseen 41. Mikä on väärin ja näyttää tuotoksen ” yritä uudelleen! Arvasit liian pieneksi”. Lopuksi käyttäjä arvasi seitsemänneksi arvauksekseen oikean numeron, joka on 42.
Arvausten kokonaismäärä = 7
selitys 2: Jos käyttäjän syötteet vaihtelevat, sanotaan 1: stä 50: een. Ja kääntäjä satunnaisesti valittu 42 kuin kokonaisluku. Nyt alkoi arvauspeli. Puolet 50: stä on siis 25. Käyttäjä syöttää ensimmäiseksi arvauksekseen 25. Tällä kertaa kääntäjä näyttää, ” yritä uudelleen! Arvasit liian pieneksi”. Se tarkoittaa, että kokonaisluvut alle 25 (1: stä 25: een) ovat hyödyttömiä arvattavia. Nyt käyttäjän arvailujen vaihteluväli on lyhyempi eli 25: stä 50: een. Älykkäästi! Käyttäjä arvasi puolet tästä alueesta, niin että, käyttäjä arvasi 37 hänen / hänen toinen arvaus. Tällä kertaa kääntäjä näyttää tulosteen, ” yritä uudelleen! Arvasit liian pieneksi”. Käyttäjälle arvausalue pienenee jokaisella arvauksella. Nyt käyttäjän arvausalue on 37: stä 50: een, josta käyttäjä arvasi kolmanneksi arvauksekseen 43. Tällä kertaa kääntäjä näyttää tulosteen ” yritä uudelleen! Arvasit liian korkealle.” Käyttäjien Uusi arvausalue on siis 37: stä 43: een, jolle taas käyttäjä arvasi tämän alueen puoliskon eli 40: n neljäntenä arvauksenaan. Tällä kertaa kääntäjä näyttää tulosteen, ” yritä uudelleen! Arvasit liian pieneksi”. Jättäen arvaus vielä pienempi sellainen, että 41-43. Nyt käyttäjä arvasi viidenneksi arvauksekseen 41. Mikä on väärin ja näyttää tuotoksen ” yritä uudelleen! Arvasit liian pieneksi”. Lopuksi käyttäjä arvasi kuudenneksi arvauksekseen oikean numeron, joka on 42.
Arvausten kokonaismäärä = 6
joten arvausten vähimmäismäärä riippuu vaihteluvälistä. Ja kääntäjä on laskettava vähimmäismäärä arvaus riippuu alueen, omasta. Tätä varten meillä on kaava:-
arvauksen vähimmäismäärä = log2(ylempi – alempi raja + 1)
algoritmi: alla ovat vaiheet:
- käyttäjä syöttää alueen ala-ja ylärajan.
- kääntäjä luo satunnaisluvun vaihteluvälin välille ja tallentaa sen muuttujaan tulevia viittauksia varten.
- toistuvaa arvailua varten käynnistetään while loop.
- jos käyttäjä arvasi numeron, joka on suurempi kuin satunnaisesti valittu numero, käyttäjä saa tulosteen ”yritä uudelleen! Arvasit liian korkealle ”
- muuten jos käyttäjä arvasi numeron, joka on pienempi kuin satunnaisesti valittu numero, käyttäjä saa tulosteen ” yritä uudelleen! Arvasit liian pienen ”
- ja jos käyttäjä arvasi vähimmäismäärän arvauksia, käyttäjä saa ” onneksi olkoon! ” Lähtö.
- muuten jos käyttäjä ei arvannut kokonaislukua arvausten minimimäärässä, hän saa ”Better Luck Next Time!” lähtö.
alla on algoritmin toteutus:
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;
}
lähtö: alla on edellä mainitun ohjelman tuotos
ARVONTAPELIN lähtö