Isso está relacionado tangencialmente à minha busca por inventar uma linguagem de programação esotérica .
Uma tabela dos números binários 0 .. 15 pode ser usada para implementar uma Função Binária Universal usando operações de indexação. Dadas duas entradas de 1 bit X e Y, todas as 16 funções possíveis podem ser codificadas em um código de operação de 4 bits.
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
Portanto, este conjunto de 16 funções pode ser aplicado a entradas binárias como a função
U (f, x, y): (f >> ((x << 1) | y)) & 1 ,
ou
U (f, x, y): (f / 2 ^ (x × 2 + y))% 2 ,
ou com indexação ou particionamento de matriz.
Será útil conhecer a maneira mais compacta de representar ou gerar uma tabela de valores para quaisquer idiomas possíveis a serem construídos sobre esse tipo de operação binária.
O objetivo:
Gere esta saída de texto exata:
0101010101010101
0011001100110011
0000111100001111
0000000011111111
É isso aí! O código mais curto vence.