ধনাত্মক পূর্ণসংখ্যার একটি ইনপুট দেওয়া হয়েছে, 1 থেকে শুরু করে বাইনারি অনুসন্ধানের মাধ্যমে ইনপুটটি সন্ধান করতে যে পদক্ষেপ নেয় তার সংখ্যা আউটপুট।
আমরা ইনপুট হিসাবে প্রদত্ত পূর্ণসংখ্যার জন্য বাইনারি অনুসন্ধান সিমুলেট করছি, যাতে সিমুলেটেড অনুসন্ধানকারী বারবার কোনও পূর্ণসংখ্যার অনুমান করতে পারে এবং বলা যায় যে এটি খুব বেশি, খুব কম বা সঠিক কিনা। পূর্ণসংখ্যার সন্ধানের কৌশলটি নিম্নরূপ:
আমরা যে ইনপুট হিসাবে সন্ধানের চেষ্টা করছি তাতে পূর্ণসংখ্যা হিসাবে ধরা যাক।
১. অনুমান দিয়ে শুরু করুন (প্রতিটি অনুমানের জন্য, পদক্ষেপের সংখ্যা বৃদ্ধি করুন (এটি সঠিক ছিল কি না নির্বিশেষে)) এবং তাত্ক্ষণিকভাবে থামান এবং অনুমানটি সঠিক হলে মোট পদক্ষেপের সংখ্যা নির্ধারণ করুন))
অনুমানটি এন (লক্ষ্য সংখ্যা) এর চেয়ে বড় না হওয়া পর্যন্ত বারবার অনুমান দ্বিগুণ করুন। (বা যদি এটি সঠিক হয় তবে এটি ইতিমধ্যে উপরে উল্লিখিত আমাদের সঠিক অনুমানের বিধি দ্বারা আবৃত)
এখন, 2 এর প্রথম শক্তির উপরের সীমাটি সেট করুন যা n এর চেয়ে বড় (যেমনটি কেবল অনুমান করা সংখ্যা) এবং তার নীচে 2 পাওয়ারের নীচের সীমানা নির্ধারণ করে।
বারবার উপরের বাউন্ড এবং নিম্ন সীমাটির গড় (বৃত্তাকার নিচে) অনুমান করুন। যদি এটি খুব বেশি হয় তবে এটি উপরের সীমানা হিসাবে সেট করুন। যদি এটি খুব কম হয় তবে এটি নিম্ন সীমা হিসাবে সেট করুন। এই পদ্ধতিটি শেষ পর্যন্ত সঠিক অনুমানের পরিণতিতে গ্যারান্টিযুক্ত।
এন = 21 এর ইনপুটটির জন্য এখানে একটি উদাহরণ রয়েছে:
1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21
\__________________________/
repeated doubling \________________________/
repeated averaging
যেহেতু এটি কোড-গল্ফ , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে।
এখানে এন = 1 থেকে এন = 100 পর্যন্ত সমস্ত আউটপুট রয়েছে:
1
2
4
3
6
5
6
4
8
7
8
6
8
7
8
5
10
9
10
8
10
9
10
7
10
9
10
8
10
9
10
6
12
11
12
10
12
11
12
9
12
11
12
10
12
11
12
8
12
11
12
10
12
11
12
9
12
11
12
10
12
11
12
7
14
13
14
12
14
13
14
11
14
13
14
12
14
13
14
10
14
13
14
12
14
13
14
11
14
13
14
12
14
13
14
9
14
13
14
12
এবং এখানে আরও কিছু বড় পরীক্ষার মামলা রয়েছে:
1234 -> 21
1337 -> 22
3808 -> 19
12345 -> 28
32768 -> 16
32769 -> 32
50000 -> 28