นี้จะเกี่ยวข้องกับการสัมผัสในการแสวงหาของฉันที่จะคิดค้นการเขียนโปรแกรมภาษาลึกลับ
ตารางของเลขฐานสอง 0 .. 15 สามารถนำมาใช้ในการใช้งานฟังก์ชั่นยูนิเวอร์แซลไบนารีโดยใช้การจัดทำดัชนี กำหนดอินพุต 1 บิตสองตัว X และ Y ฟังก์ชันที่เป็นไปได้ทั้ง 16 ฟังก์ชันสามารถเข้ารหัสใน opcode 4 บิต
X Y F|0 1 2 3 4 5 6 7 8 9 A B C D E F
- - - - - - - - - - - - - - - - - -
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
- - - - - - - - -
0 ~X ~Y ^ & Y X | 1
ZERO NOT-Y AND OR
NOT-X XOR ONE
ดังนั้นชุด 16 ฟังก์ชั่นนี้สามารถนำไปใช้กับอินพุตไบนารีเป็นฟังก์ชั่น
U (f, x, y): (f >> ((x << 1) | y)) & 1 ,
หรือ
U (f, x, y): (f / 2 ^ (x × 2 + y))% 2 ,
หรือด้วยการทำดัชนีหรือการแบ่งเมทริกซ์
มันจะมีประโยชน์ที่จะรู้วิธีกะทัดรัดที่สุดในการเป็นตัวแทนหรือสร้างตารางค่าดังกล่าวสำหรับภาษาที่เป็นไปได้ใด ๆ ที่จะสร้างขึ้นบนการดำเนินการแบบไบนารีประเภทนี้
เป้าหมาย:
สร้างเอาต์พุตข้อความที่แน่นอนนี้:
0101010101010101
0011001100110011
0000111100001111
0000000011111111
แค่นั้นแหละ! รหัสสั้นที่สุดชนะ