Điều này liên quan đến nhiệm vụ của tôi để phát minh ra một ngôn ngữ lập trình bí truyền .
Một bảng gồm các số nhị phân 0 .. 15 có thể được sử dụng để triển khai Hàm nhị phân phổ quát sử dụng các thao tác lập chỉ mục. Cho hai đầu vào 1 bit X và Y, tất cả 16 hàm có thể có thể được mã hóa trong opcode 4 bit.
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
Vì vậy, bộ 16 hàm này có thể được áp dụng cho các đầu vào nhị phân làm hàm
U (f, x, y): (f >> ((x << 1) | y)) & 1 ,
hoặc là
U (f, x, y): (f / 2 ^ (x × 2 + y))% 2 ,
hoặc với lập chỉ mục hoặc phân vùng ma trận.
Sẽ rất hữu ích khi biết cách nhỏ gọn nhất để biểu diễn hoặc tạo một bảng giá trị như vậy cho bất kỳ ngôn ngữ nào có thể được xây dựng dựa trên loại hoạt động nhị phân này.
Mục đích:
Tạo đầu ra văn bản chính xác này:
0101010101010101
0011001100110011
0000111100001111
0000000011111111
Đó là nó! Mã ngắn nhất thắng.