Однією з багатьох унікальних особливостей мови програмування Malbolge є її дуже неінтуїтивний OP
оператор, який у документації та вихідному коді називається лише "op", але в народі відомий як "божевільний" оператор. Як описав у своїй документації Бен Олмстед, творець мови: " не шукайте шаблону, його там немає ".
op - оператор "tritwise" - він працює на відповідних потрійних цифрах двох його аргументів. Для кожного трита (потрійний біт) результат op задається наступною таблицею пошуку:
a
op(a,b) 0 1 2
+-------
0 | 1 0 0
b 1 | 1 0 2
2 | 2 2 1
Наприклад, для обчислення op(12345, 54321)
спочатку випишіть обидва числа у потрійному, а потім шукайте кожну пару тритів у таблиці:
0121221020 (12345_3)
op 2202111220 (54321_3)
--------------
2202220211 (54616_3)
Останній важливий момент є те, що всі значення в Malbolge 10 trits шириною, тому вхідні значення повинні бути доповнені нулями до ширини 10. (наприклад, op(0, 0)
знаходиться 1111111111
в трехкомпонентном.)
Ваше завдання - взяти за вхід два цілих числа 0 ≤ a
, b
<59049 та вивести ціле число op(a,b)
.
Тестові приклади (у форматі a b op(a,b)
):
0 0 29524
1 2 29525
59048 5 7
36905 2214 0
11355 1131 20650
12345 54321 54616
Ось реалізація посилань (скопійована безпосередньо з вихідного коду Malbolge).
54616_3
не означає, що "інша річ є десятковим числом 54616, але представлена як основна три". Це означає "Прочитати 54616
як базу 3". Що, звичайно, ви не можете зробити (є цифри, на які Valve не може порахувати). Напевно, все одно було б так само зрозуміло, якби ви позбулися _3
цілком і точніше.