Ceci est tangentiellement lié à ma quête pour inventer un langage de programmation ésotérique .
Un tableau des nombres binaires 0 à 15 peut être utilisé pour implémenter une fonction binaire universelle à l'aide d'opérations d'indexation. Étant donné deux entrées X et Y 1 bit, les 16 fonctions possibles peuvent être encodées dans un opcode 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
Donc, cet ensemble de 16 fonctions peut être appliqué aux entrées binaires comme fonction
U (f, x, y): (f >> ((x << 1) | y)) & 1 ,
ou
U (f, x, y): (f / 2 ^ (x × 2 + y))% 2 ,
ou avec indexation ou partitionnement matriciel.
Il sera utile de connaître la manière la plus compacte de représenter ou de générer une telle table de valeurs pour tout langage possible à construire sur ce type d'opération binaire.
Le but:
Générez cette sortie de texte exacte:
0101010101010101
0011001100110011
0000111100001111
0000000011111111
C'est ça! Le code le plus court gagne.