Malbolge编程语言的许多独特功能之一是其高度直观的OP
运算符,在文档和源代码中仅称为“ op”,而通常称为“ crazy”运算符。正如该语言的创建者本·奥尔姆斯特德(Ben Olmstead)在其文档中所描述的那样:“ 不要寻找模式,它就在那里。”
op是“ tritwise”运算符-它对两个自变量的相应三进制数进行运算。对于每个trit(三进制位),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
完全放弃了它,那么它仍然可能是一样清晰,而且更加准确。