ภาษาการเขียนโปรแกรมจำนวนมากจัดเตรียมโอเปอเรเตอร์สำหรับจัดการเลขฐานสอง (ฐาน -2) ของจำนวนเต็ม นี่คือวิธีหนึ่งในการสรุปผู้ประกอบการเหล่านี้ไปยังฐานอื่น ๆ :
ให้xและy ที่เป็นตัวเลขหลักเดียวในฐานB กำหนดผู้ประกอบการเอกภาค~
และผู้ประกอบการไบนารี&
, |
และ^
เช่นว่า:
- ~ x = (B - 1) - x
- x & y = นาที (x, y)
- x | y = สูงสุด (x, y)
- x ^ y = (x & ~ y) | (y & ~ x)
โปรดทราบว่าถ้า B = 2 เราได้รับตัวดำเนินการ bitwise ที่ไม่คุ้นเคย AND และ OR และ XOR
สำหรับ B = 10 เราได้รับตาราง“ ทศนิยม XOR”:
^ │ 0 1 2 3 4 5 6 7 8 9
──┼────────────────────
0 │ 0 1 2 3 4 5 6 7 8 9
1 │ 1 1 2 3 4 5 6 7 8 8
2 │ 2 2 2 3 4 5 6 7 7 7
3 │ 3 3 3 3 4 5 6 6 6 6
4 │ 4 4 4 4 4 5 5 5 5 5
5 │ 5 5 5 5 5 4 4 4 4 4
6 │ 6 6 6 6 5 4 3 3 3 3
7 │ 7 7 7 6 5 4 3 2 2 2
8 │ 8 8 7 6 5 4 3 2 1 1
9 │ 9 8 7 6 5 4 3 2 1 0
สำหรับตัวเลขหลายหลักให้ใช้โอเปอเรเตอร์หลักเดียวทีละหลัก ตัวอย่างเช่น 12345 ^ 24680 = 24655 เนื่องจาก:
- 1 ^ 2 = 2
- 2 ^ 4 = 4
- 3 ^ 6 = 6
- 4 ^ 8 = 5
- 5 ^ 0 = 5
หากตัวถูกดำเนินการมีความยาวแตกต่างกันให้นำแผ่นที่สั้นกว่าด้วยเลขศูนย์นำหน้า
ความท้าทาย
เขียนเป็นไบต์น้อยที่สุดเท่าที่เป็นไปได้โปรแกรมหรือฟังก์ชั่นที่ใช้เป็นจำนวนเต็มสองจำนวนเต็ม (ซึ่งอาจจะอยู่ระหว่าง 0 ถึง 999 999 999 รวม) และส่งออก "ทศนิยม XOR" ของตัวเลขทั้งสองตามที่กำหนดไว้ข้างต้น
กรณีทดสอบ
- 12345, 24680 → 24655
- 12345, 6789 → 16654
- 2019, 5779 → 5770
- 0, 999999999 → 999999999
- 0, 0 → 0
09
ผลที่ได้รับการยอมรับสำหรับการป้อนข้อมูลของ90, 99
?
A^B^B=A
a^b=b^a
และa^b^b=a
ฐานกับหารสำคัญคี่