एक सकारात्मक पूर्णांक के इनपुट को देखते हुए, 1 पर शुरू होने वाले द्विआधारी खोज के माध्यम से इनपुट को खोजने के लिए उठाए जाने वाले चरणों की संख्या को आउटपुट करें।
हम उस पूर्णांक के लिए एक द्विआधारी खोज का अनुकरण कर रहे हैं जो इनपुट के रूप में दिया गया था, जिसमें नकली खोजकर्ता एक पूर्णांक का अनुमान लगा सकता है और बताया जा सकता है कि क्या यह बहुत अधिक है, बहुत कम है, या सही है। पूर्णांक खोजने की रणनीति इस प्रकार है:
चलिए पूर्णांक को इनपुट के रूप में दिया जाता है जिसे हम खोजने की कोशिश कर रहे हैं।
1 के एक अनुमान के साथ शुरू करें। (हर अनुमान के लिए, चरणों की संख्या बढ़ाएँ (चाहे यह सही था या नहीं), और तुरंत बंद कर दें और यदि अनुमान सही था, तो कुल चरणों की संख्या को आउटपुट करें।)
जब तक अनुमान n (लक्ष्य संख्या) से अधिक न हो जाए तब तक अनुमान को दोहराएं। (या यदि यह सही है, लेकिन यह पहले से ही हमारे सही-अनुमान नियम द्वारा कवर किया गया है।)
अब, 2 की पहली शक्ति का एक ऊपरी बाउंड सेट करें जो n से अधिक है (यानी संख्या जो कि केवल अनुमान लगाया गया था), और इसके ठीक नीचे 2 की शक्ति की एक निचली बाउंड सेट करें।
बार-बार ऊपरी सीमा और निचली सीमा के औसत (गोल नीचे) का अनुमान लगाते हैं। यदि यह बहुत अधिक है, तो इसे ऊपरी बाउंड के रूप में सेट करें। यदि यह बहुत कम है, तो इसे निचले बाउंड के रूप में सेट करें। यह प्रक्रिया अंततः एक सही अनुमान में परिणाम की गारंटी है।
यहाँ एक उदाहरण है n = 21 के इनपुट के लिए:
1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21
\__________________________/
repeated doubling \________________________/
repeated averaging
चूंकि यह कोड-गोल्फ है , बाइट्स में सबसे छोटा कोड जीत जाएगा।
यहाँ n = 1 से n = 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