GeeksforGeeks
CS(コンピュータサイエンス)の背景からのオタクのほとんどは、プログラミング言語をやった後、彼らの非常に最初のプロジェ ここでは、この記事で最初のプロジェクトと基本的なプロジェクトを取得します。
タスク:以下の手順があります:
- ユーザーが範囲を選択する数推測ゲームを構築します。
- ユーザーがaからBまでの範囲を選択したとしましょう。AとBが整数に属しています。
- いくつかのランダムな整数がシステムによって選択され、ユーザーは推測の最小数でその整数を推測する必要があります
分析:
説明1:ユーザーが範囲を入力した場合、1から100としましょう。 そして、コンパイラは無作為に整数として42を選択しました。 そして今、推測ゲームが開始されたので、ユーザーは彼/彼女の最初の推測として50を入力しました。 コンパイラは”Try Again! あなたは高すぎると推測しました”。 これは、乱数(つまり、42)が50から100の範囲に収まらないことを意味します。 それは範囲の半分を推測することの重要性です。 そして再び、ユーザーは50の半分を推測します(なぜ私に教えてもらえますか?). だから、50の半分は25です。 ユーザーは、彼/彼女の第二の推測として25を入力します。 今回は、”もう一度やり直してください!”というメッセージが表示されます。 あなたは小さすぎる”と推測しました。 これは、25未満の整数(1から25まで)が推測するのに役に立たないことを意味します。 これで、ユーザー推測の範囲が短くなり、つまり25から50になりました。 知的に! ユーザーはこの範囲の半分を推測したので、ユーザーは37を彼/彼女の3番目の推測として推測しました。 今回もコンパイラは出力を”Try Again! あなたは小さすぎる”と推測しました。 ユーザーにとっては、推測の範囲は推測ごとに小さくなっています。 ここで、ユーザーの推測範囲は37から50であり、ユーザーは43を彼/彼女の第4の推測として推測しました。 今回は、コンパイラが出力”Try Again!”を表示します。 あなたは高すぎると推測しました”。 したがって、ユーザーの新しい推測範囲は37から43になり、ユーザーがこの範囲の半分、つまり5番目の推測として40を推測しました。 今回は、コンパイラが出力を表示します,”もう一度試してみてください! あなたは小さすぎる”と推測しました。 41から43までのように推測をさらに小さくしておきます。 そして今、ユーザーは彼/彼女の第六の推測として41を推測しました。 これは間違っており、出力”Try Again! あなたは小さすぎる”と推測しました。 そして最後に、ユーザーは彼/彼女の第七の推測として42である右の数を推測しました。
推測の総数=7
説明2:ユーザーが範囲を入力した場合、1から50までとしましょう。 そして、コンパイラは無作為に整数として42を選択しました。 そして今、推測ゲームが始まりました。 だから、50の半分は25です。 ユーザーは、最初の推測として25を入力します。 今回は、”もう一度やり直してください!”というメッセージが表示されます。 あなたは小さすぎる”と推測しました。 これは、25未満の整数(1から25まで)が推測するのに役に立たないことを意味します。 これで、ユーザー推測の範囲が短くなり、つまり25から50になりました。 知的に! ユーザーはこの範囲の半分を推測したので、ユーザーは彼/彼女の第二の推測として37を推測しました。 今回もコンパイラは出力を”Try Again! あなたは小さすぎる”と推測しました。 ユーザーにとっては、推測の範囲は推測ごとに小さくなっています。 さて、ユーザーの推測範囲は37から50であり、ユーザーは3番目の推測として43を推測しました。 今回は、コンパイラが出力”Try Again!”を表示します。 あなたは高すぎると推測しました”。 したがって、ユーザーの新しい推測範囲は37から43になり、ユーザーがこの範囲の半分、つまり4番目の推測として40を推測しました。 今回は、コンパイラが出力を表示します,”もう一度試してみてください! あなたは小さすぎる”と推測しました。 41から43までのように推測をさらに小さくしておきます。 そして今、ユーザーは彼/彼女の第五の推測として41を推測しました。 これは間違っており、出力”Try Again! あなたは小さすぎる”と推測しました。 そして最後に、ユーザーは彼/彼女の第六の推測として42である右の数を推測しました。
推測の総数=6
だから、推測の最小数は範囲に依存します。 また、コンパイラは、推測の最小数を計算する必要があります範囲に依存し、それ自体に依存します。 このために、我々は式を持っています:-
推測の最小数=log2(上限-下限+ 1)
アルゴリズム:以下の手順は次のとおりです:
- ユーザーは、範囲の下限と上限を入力します。
- コンパイラは、範囲の間にランダムな整数を生成し、将来の参照のために変数に格納します。
- 反復的な推測のために、whileループが初期化されます。
- ユーザーがランダムに選択された数値よりも大きい数値を推測した場合、ユーザーは”Try Again! You guessed too high”
- そうでなければ、ユーザーがランダムに選択された数値よりも小さい数値を推測した場合、ユーザーは”Try Again! あなたは小さすぎると推測しました”
- そして、ユーザーが推測の最小数で推測した場合、ユーザーは”おめでとう! “出力。
- そうでなければ、ユーザーが推測の最小数の整数を推測しなかった場合、彼/彼女は”次回はより良い運が得られます!”出力。
以下はアルゴリズムの実装です:
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;
}
出力:以下は上記のプログラムの出力です
推測ゲームの出力