introduction
Un code Gray est une alternative à la représentation binaire dans laquelle un nombre est incrémenté en ne basculant qu'un bit, plutôt qu'une quantité variable de bits. Voici quelques codes gris ainsi que leurs équivalents décimaux et binaires:
decimal | binary | gray
-------------------------
0 | 0 | 0
-------------------------
1 | 1 | 1
-------------------------
2 | 10 | 11
-------------------------
3 | 11 | 10
-------------------------
4 | 100 | 110
-------------------------
5 | 101 | 111
-------------------------
6 | 110 | 101
-------------------------
7 | 111 | 100
-------------------------
8 | 1000 | 1100
-------------------------
9 | 1001 | 1101
-------------------------
10 | 1010 | 1111
-------------------------
11 | 1011 | 1110
-------------------------
12 | 1100 | 1010
-------------------------
13 | 1101 | 1011
-------------------------
14 | 1110 | 1001
-------------------------
15 | 1111 | 1000
Motif de bits cyclique d'un code gris
Parfois appelée "binaire réfléchi", la propriété de ne changer qu'un bit à la fois est facilement obtenue avec des modèles de bits cycliques pour chaque colonne à partir du bit le moins significatif:
bit 0: 0110011001100110011001100110011001100110011001100110011001100110
bit 1: 0011110000111100001111000011110000111100001111000011110000111100
bit 2: 0000111111110000000011111111000000001111111100000000111111110000
bit 3: 0000000011111111111111110000000000000000111111111111111100000000
bit 4: 0000000000000000111111111111111111111111111111110000000000000000
bit 5: 0000000000000000000000000000000011111111111111111111111111111111
...etc.
Objectif
Avec une chaîne d'entrée non complétée d'un code gris, incrémentez ce dernier en alternant un seul caractère de la séquence ou en ajoutant un préfixe 1(lors de l'incrémentation à la puissance suivante de 2), puis exportez le résultat sous forme de code gris non complété.
Mises en garde
- Ne vous inquiétez pas de prendre
0ou d'une chaîne vide en entrée. - L'entrée la plus basse sera
1, et il n'y a pas de limite supérieure à la longueur de chaîne autre que les limites de mémoire imposées par l'environnement. - Par chaîne non complétée, j'entends qu'il n'y aura pas d'espaces de début ou de fin (autres qu'un retour à la ligne facultatif), ni de
0s de début dans l'entrée ou la sortie.
Formats d'E / S
Les formats suivants sont acceptés sous forme d’entrée et de sortie, mais les chaînes sont encouragées par rapport à d’autres formats:
- le plus significatif "bit" premier
- tableau de caractères non complété ou chaîne de caractères ASCII
'1'et'0's - tableau entier non-complété de
1s et0s - tableau booléen non rembourré
Ce qui n'est pas permis:
- le "bit" le moins significatif en premier
- entier décimal, binaire ou unaire
- structure de données de longueur fixe
- tableau de caractères ou chaîne d'index ASCII non imprimables
1et0
Des tests
input -> output
1 -> 11
11 -> 10
111 -> 101
1011 -> 1001
1111 -> 1110
10111 -> 10110
101100 -> 100100
100000 -> 1100000
Plus de tests peuvent être ajoutés sur demande.
Critères
C'est du code-golf , donc le programme le plus court en octets gagne! Tous les liens seront brisés en favorisant les soumissions antérieures; les failles standard s'appliquent. La meilleure réponse soumise sera acceptée le 9 octobre 2016 et mise à jour chaque fois que de meilleures réponses seront données.
0011pour 8