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
0
ou 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
0
s 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
1
s et0
s - 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
1
et0
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.
0011
pour 8