Salah satu fitur unik dari bahasa pemrograman Malbolge adalah OP
operatornya yang sangat tidak intuitif , hanya disebut sebagai "op" dalam dokumentasi dan kode sumber tetapi dikenal sebagai operator "gila". Seperti dijelaskan oleh Ben Olmstead, pencipta bahasa, dalam dokumentasinya: " jangan mencari pola, itu tidak ada di sana ."
op adalah operator "tritwise" - ini beroperasi pada digit ternary yang sesuai dari dua argumennya. Untuk setiap trit (bit ternary), hasil op diberikan oleh tabel pencarian berikut:
a
op(a,b) 0 1 2
+-------
0 | 1 0 0
b 1 | 1 0 2
2 | 2 2 1
Misalnya, untuk menghitung op(12345, 54321)
, pertama-tama tuliskan kedua angka dalam ternary dan kemudian cari setiap pasangan trit dalam tabel:
0121221020 (12345_3)
op 2202111220 (54321_3)
--------------
2202220211 (54616_3)
Poin penting terakhir adalah bahwa semua nilai di Malbolge memiliki lebar 10 trit, sehingga nilai input harus diisi dengan nol hingga lebar 10. (Misalnya, op(0, 0)
berada 1111111111
di ternary.)
Tugas Anda adalah mengambil dua bilangan bulat 0 ≤ a
, b
<59049 sebagai input, dan menghasilkan nilai integer sebesar op(a,b)
.
Kasus uji (dalam format a b op(a,b)
):
0 0 29524
1 2 29525
59048 5 7
36905 2214 0
11355 1131 20650
12345 54321 54616
Berikut ini adalah implementasi referensi (disalin langsung dari kode sumber Malbolge).
54616_3
tidak berarti "hal lain ini adalah angka desimal 54616, tetapi diwakili sebagai basis tiga". Ini berarti "Baca 54616
sebagai basis 3". Yang tentu saja tidak bisa Anda lakukan (ada angka yang tidak bisa dihitung oleh Valve di sana). Mungkin masih akan sama jelasnya jika Anda menyingkirkan _3
seluruhnya, dan lebih akurat.