Diberikan input bilangan bulat positif, hasilkan jumlah langkah yang diperlukan untuk menemukan input melalui pencarian biner mulai dari 1.
Kami mensimulasikan pencarian biner untuk integer yang diberikan sebagai input, di mana pencari yang disimulasikan berulang kali dapat menebak integer dan diberi tahu apakah itu terlalu tinggi, terlalu rendah, atau benar. Strategi untuk menemukan integer adalah sebagai berikut:
Biarkan n menjadi bilangan bulat yang diberikan sebagai input yang kami coba temukan.
Mulailah dengan tebakan 1. (Untuk setiap tebakan, tambahkan jumlah langkah (terlepas dari apakah itu benar atau tidak), dan segera berhenti dan hasilkan jumlah langkah jika tebakan itu benar.)
Gandakan tebakan berulang kali hingga tebakan lebih besar dari n (angka target). (Atau jika itu benar, tapi itu sudah dicakup oleh aturan tebakan-benar kami yang disebutkan di atas.)
Sekarang, atur batas atas kekuatan pertama 2 yang lebih besar dari n (yaitu angka yang baru saja ditebak), dan atur batas bawah kekuatan 2 langsung di bawahnya.
Tebakan berulang kali rata-rata (dibulatkan ke bawah) dari batas atas dan batas bawah. Jika terlalu tinggi, atur sebagai batas atas. Jika terlalu rendah, atur sebagai batas bawah. Prosedur ini dijamin pada akhirnya menghasilkan tebakan yang benar.
Berikut ini contoh, untuk input n = 21:
1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21
\__________________________/
repeated doubling \________________________/
repeated averaging
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Berikut ini semua keluaran dari n = 1 hingga 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
Dan berikut ini beberapa kasus uji yang lebih besar:
1234 -> 21
1337 -> 22
3808 -> 19
12345 -> 28
32768 -> 16
32769 -> 32
50000 -> 28