这与我对发明一种深奥的编程语言的追求是切线相关的。
二进制数0 .. 15的表可用于通过索引操作实现通用二进制函数。给定两个1位输入X和Y,可以将所有 16种可能的功能编码为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
而已!最短代码获胜。