Malbolge 프로그래밍 언어 의 많은 고유 한 기능 중 하나는 직관적이지 않은 OP연산자로, 설명서 및 소스 코드에서 "op"로만 알려져 있지만 "crazy"연산자로 널리 알려져 있습니다. 언어의 창시자 인 벤 올 름스 테드 (Ben Olmstead)의 설명에 따르면, " 패턴을 찾지 말고 존재하지 않는다 "고 문서에 기록되어 있다 .
op는 "tritwise"연산자이며 두 인수의 해당 삼항 숫자에서 작동합니다. 각 trit (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)먼저 두 숫자를 모두 삼항으로 쓴 다음 테이블에서 각 쌍의 트 라이트를 찾습니다.
0121221020 (12345_3)
op 2202111220 (54321_3)
--------------
2202220211 (54616_3)
마지막으로 중요한 점은 입력 값 (10)의 폭을 제로로 채워질 수 있도록한다 말레 볼제 모든 값이 10 trits가 넓은 점이다 (예를 들어, 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이지만 기본 3으로 표시됨"을 의미하지는 않습니다. " 54616기본 3으로 읽기"를 의미 합니다. 물론, 당신은 할 수 없습니다 (Valve가 계산할 수없는 숫자가 있습니다). 당신이 _3전체적이고 더 정확한 것을 제거했다면 여전히 분명 합니다.