Pozitif bir tamsayının bir girdisi verildiğinde, 1'den başlayan bir ikili arama yoluyla girişi bulmak için gereken adım sayısını çıktılayın.
Girdi olarak verilen tamsayı için ikili bir aramayı simüle ediyoruz, buradaki simüle edilmiş araştırıcı tekrar tekrar bir tamsayıyı tahmin edebilir ve çok yüksek, çok düşük veya doğru olup olmadığını söyleyebilir. Tamsayıyı bulma stratejisi aşağıdaki gibidir:
N, bulmaya çalıştığımız girdi olarak verilen tam sayı olsun.
1 tahminiyle başlayın. (Her tahmin için, adım sayısını artırın (doğru olup olmadığına bakılmaksızın) ve tahminin doğru olması durumunda derhal toplam adım sayısını durdurup çıktılayın.)
Tahmin n'den (hedef sayı) büyük olana kadar tahminleri iki kez tekrarlayın. (Veya doğruysa, ancak bu yukarıda belirtilen doğru tahmin kuralımız tarafından kapsanmaktadır.)
Şimdi, 2'nin ilk gücünün n'den büyük olan bir üst sınırını ayarlayın (yani tahmin edilen sayı) ve doğrudan 2'nin altındaki gücün bir alt sınırını ayarlayın.
Üst sınır ve alt sınırın ortalamasını (aşağı yuvarlanmış) tekrar tekrar tahmin edin. Çok yüksekse, üst sınır olarak ayarlayın. Çok düşükse, alt sınır olarak ayarlayın. Bu prosedürün sonunda doğru bir tahminde bulunulması garanti edilir.
İşte n = 21 girişi için bir örnek:
1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21
\__________________________/
repeated doubling \________________________/
repeated averaging
Bu kod golf olduğundan , bayt cinsinden en kısa kod kazanacaktır.
İşte n = 1 ile n = 100 arasındaki tüm çıktılar:
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
Ve bazı büyük test örnekleri:
1234 -> 21
1337 -> 22
3808 -> 19
12345 -> 28
32768 -> 16
32769 -> 32
50000 -> 28