Bugün en verimli ikili fonksiyonu hesaplayacağız. Daha spesifik olarak, işlevi sabit giriş 0'a veya kendi çıktısına uygulamaktan bir ifade oluşturulduğunda, mümkün olan en kısa ifadelere sahip tüm pozitif tamsayıları temsil edebilen ve daha küçük tamsayılara daha yüksek öncelik veren işlevi hesaplayacağız.
Bu işlev aşağıdaki gibi oluşturulmuştur:
Her tamsayı için, 1'den başlayıp yukarı doğru, henüz bir çıktı atamadığımız en kısa ifadeyi seçin ve bu tamsayıyı o ifadenin çıktısını yapın. İfade uzunluğundaki bağlar daha küçük sol argüman ve sonra daha küçük sağ argüman tarafından kesilir. Şöyle çalışır:
Başlangıçta, 1 atanmamış. Atanmamış en kısa ifade
f(0, 0)
, bu yüzden bunu 1 olarak ayarlayacağız.Şimdi, 2 atanmamış. Atanmamış en kısa ifadeler
f(f(0, 0), 0)
=f(1, 0)
vef(0, f(0, 0))
= şeklindedirf(0, 1)
. Bağlar daha küçük sol argümana doğru kırılıyorf(0, 1) = 2
.Atanmayan en kısa ifade
f(f(0, 0), 0)
=f(1, 0)
, yanif(1, 0) = 3
.Şimdi, sadece 2
f
s ve 30
s ifadelerimiz kalmadı, bu yüzden her birine bir tane daha eklememiz gerekecek. Bağları sol argümanla, sonra sağ argümanla koparıyoruz, of(0, 2) = 4
zamandan berif(0, f(0, f(0, 0))) = f(0, f(0, 1)) = f(0, 2)
.Sürekli, elimizdeki
f(0, 3) = 5
,f(1, 1) = 6
,f(2, 0) = 7
,f(3, 0) = 8
,f(0, 4) = 9
, ...
İlk birkaç değer için doldurduğum bir tablo:
0 1 2 3 4 5 6 7 8
/---------------------------
0| 1 2 4 5 9 10 11 12 13
1| 3 6 14 15 37 38 39 40 41
2| 7 16 42 43
3| 8 17 44 45
4| 18 46
5| 19 47
6| 20 48
7| 21 49
8| 22 50
Buna bakmanın bir başka yolu, her çıktının, girdilerinin artı bir boyutunun toplamına eşit bir boyuta sahip olmasıdır. Tablo, artan çıktı boyutu sırasına göre doldurulur, sol giriş sonra sağ giriş en aza indirilerek bağlar kopar.
Bu işlevin değerini girdi, hesapla ve çıktı olarak negatif olmayan iki tam sayı verildi. Bu kod golf. Bayt cinsinden en kısa çözüm kazanır. Standart boşluklar yasaklanmıştır.
((0, (0, (0, 0))), 0)
sözlükbilimsel olarak daha küçüktür (((0, 0), 0), (0, 0))
, ancak ikincisinin sol tarafı daha küçüktür.