Malbolgeプログラミング言語の多くのユニークな機能の1つは、非常に直感的ではないOP
演算子です。ドキュメントとソースコードでは「op」と呼ばれますが、一般的に「crazy」演算子として知られています。言語の作成者であるベン・オルムステッドがその文書で説明しているように、「パターンを探してはいけない、そこにはない」。
opは「tritwise」演算子です。2つの引数の対応する3進数で動作します。各トリット(3進ビット)について、opの結果は次のルックアップテーブルによって与えられます。
a
op(a,b) 0 1 2
+-------
0 | 1 0 0
b 1 | 1 0 2
2 | 2 2 1
たとえば、を計算するにはop(12345, 54321)
、最初に両方の数値を3進数で書き出してから、テーブル内の各トリットのペアを検索します。
0121221020 (12345_3)
op 2202111220 (54321_3)
--------------
2202220211 (54616_3)
最後に重要な点は、入力値が10の幅にゼロで埋めなければならないのでMalbolgeのすべての値が10個のトリットが広いということである(例えば、op(0, 0)
ある1111111111
三元に)。
あなたの仕事は、2つの整数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
「この他のものは10進数の54616ですが、基数3として表される」という意味ではありません。「54616
ベース3として読む」という意味です。もちろん、これはできません(Valveがそこに数えられない数字があります)。あなたが_3
完全に取り除き、より正確になれば、おそらく同じくらい明確でしょう。