หนึ่งในคุณสมบัติที่เป็นเอกลักษณ์ของภาษาโปรแกรมMalbolgeคือOP
ตัวดำเนินการที่ไม่ได้ใช้งานง่ายซึ่งเรียกว่า "op" ในเอกสารและซอร์สโค้ด แต่รู้จักกันอย่างแพร่หลายว่าเป็นตัวดำเนินการ "บ้า" ตามที่อธิบายโดย 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)
อันดับแรกให้เขียนตัวเลขทั้งสองเป็นไตรภาคแล้วค้นหาแต่ละคู่ของ trits ในตาราง:
0121221020 (12345_3)
op 2202111220 (54321_3)
--------------
2202220211 (54616_3)
จุดสำคัญสุดท้ายคือค่าทั้งหมดใน Malbolge มีความกว้าง 10 trits ดังนั้นค่าอินพุตควรถูกเติมด้วย zeroes จนถึงความกว้าง 10 (ตัวอย่างเช่นop(0, 0)
อยู่1111111111
ในไตรภาค)
งานของคุณคือการใช้จำนวนเต็มสองจำนวน 0 ≤ a
, b
<59,049 เป็น input และ output 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
ทั้งหมดและถูกต้องมากขึ้น