Questo è tangenzialmente collegato alla mia ricerca di inventare un linguaggio di programmazione esoterico .
Una tabella dei numeri binari 0 .. 15 può essere utilizzata per implementare una funzione binaria universale mediante operazioni di indicizzazione. Dati due ingressi a 1 bit X e Y, tutte le 16 possibili funzioni possono essere codificate in un codice operativo a 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
Quindi questo set di 16 funzioni può essere applicato agli ingressi binari come funzione
U (f, x, y): (f >> ((x << 1) | y)) & 1 ,
o
U (f, x, y): (f / 2 ^ (x × 2 + y))% 2 ,
o con indicizzazione o partizionamento matriciale.
Sarà utile conoscere il modo più compatto di rappresentare o generare una tale tabella di valori per ogni possibile linguaggio da costruire su questo tipo di operazione binaria.
L'obiettivo. il gol:
Genera questo output di testo esatto:
0101010101010101
0011001100110011
0000111100001111
0000000011111111
Questo è tutto! Vince il codice più corto.