Malbolge programlama dilinin birçok benzersiz özelliğinden biri, OP
dokümantasyon ve kaynak kodunda sadece "op" olarak adlandırılan, ancak popüler olarak "çılgın" operatör olarak bilinen , son derece sezgisel olmayan operatörüdür. Dilin yaratıcısı Ben Olmstead'in açıkladığı gibi, belgelerinde: " kalıp arama, orada yok ."
op "tritwise" operatörüdür - iki argümanının üçlü rakamları üzerinde çalışır. Her bir değer için (üçlü bit), op sonucu aşağıdaki arama tablosu tarafından verilir:
a
op(a,b) 0 1 2
+-------
0 | 1 0 0
b 1 | 1 0 2
2 | 2 2 1
Örneğin, hesaplamak için op(12345, 54321)
önce her iki sayıyı da üçlü olarak yazın ve ardından tablodaki her bir çift çifti arayın:
0121221020 (12345_3)
op 2202111220 (54321_3)
--------------
2202220211 (54616_3)
Son önemli nokta girdi değerleri 10 bir genişliğe sıfır ile boşluklarla böylece Malbolge tüm değerler 10 Trits geniş olmasıdır (Örneğin, op(0, 0)
bir 1111111111
üçlü olarak).
Göreviniz giriş olarak 0 a
, b
<59049 olan iki tamsayı almak ve tamsayı değerini çıkarmaktır op(a,b)
.
Test durumları (biçiminde a b op(a,b)
):
0 0 29524
1 2 29525
59048 5 7
36905 2214 0
11355 1131 20650
12345 54321 54616
İşte bir referans uygulaması (doğrudan Malbolge kaynak kodundan kopyalandı).
54616_3
"bu diğer şey 54616 ondalık sayı değil, üçüncüsü olarak gösterilir" anlamına gelmez. " 54616
Temel 3 olarak oku" anlamına gelir . Tabii ki yapamazsınız (Valf'ın burada hesaba katamayacağı rakamlar var). Eğer _3
tamamen ve daha doğru bir şekilde kurtulduysanız, hala aynı derecede açık olacaktır .