Wprowadzenie
Grey kod jest alternatywą dla reprezentacji binarnej, w których liczba jest zwiększana przez przełączenie tylko jednego bitu, a nie do ilości zmienny bitów. Oto niektóre szare kody wraz z ich dziesiętnymi i binarnymi odpowiednikami:
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
Cykliczny wzór bitowy szarego kodu
Czasami nazywany „odzwierciedleniem binarnym”, właściwość zmiany tylko jednego bitu na raz jest łatwo osiągana dzięki cyklicznym wzorom bitów dla każdej kolumny, zaczynając od najmniej znaczącego bitu:
bit 0: 0110011001100110011001100110011001100110011001100110011001100110
bit 1: 0011110000111100001111000011110000111100001111000011110000111100
bit 2: 0000111111110000000011111111000000001111111100000000111111110000
bit 3: 0000000011111111111111110000000000000000111111111111111100000000
bit 4: 0000000000000000111111111111111111111111111111110000000000000000
bit 5: 0000000000000000000000000000000011111111111111111111111111111111
...i tak dalej.
Cel
Biorąc pod uwagę niepochodzący ciąg wejściowy szarego kodu, zwiększaj szary kod, zmieniając pojedynczy znak w sekwencji lub przygotowując 1
(przy zwiększaniu do następnej potęgi 2), a następnie wyślij wynik jako niepodszarpany szary kod.
Ostrzeżenia
- Nie martw się o pobranie
0
lub pusty ciąg znaków jako dane wejściowe. - Najniższe wejście będzie
1
, i nie ma górnego ograniczenia długości łańcucha innego niż ograniczenia pamięci narzucone przez środowisko. - Przez łańcuch bez dopełnienia mam na myśli, że nie będzie żadnych początkowych ani końcowych białych znaków (poza opcjonalnym końcowym znakiem nowej linii) i żadnych wiodących liter
0
s na wejściu lub wyjściu.
Formaty we / wy
Następujące formaty są akceptowane jako dane wejściowe i wyjściowe, ale zachęca się ciągi znaków w stosunku do innych formatów:
- najważniejszy „bit” jako pierwszy
- non-wyściełane tablica znak lub ciąg ASCII
'1'
s i'0'
s - niepaścieniana tablica liczb całkowitych
1
s i0
s - niemodyfikowana tablica boolowska
Co nie jest dozwolone:
- najpierw najmniej znaczący „bit”
- dziesiętna, binarna lub jednoargumentowa liczba całkowita
- struktura danych o stałej długości
- tablica znaków lub ciąg niedrukowalnych indeksów ASCII
1
i0
Testy
input -> output
1 -> 11
11 -> 10
111 -> 101
1011 -> 1001
1111 -> 1110
10111 -> 10110
101100 -> 100100
100000 -> 1100000
Więcej testów można dodać na żądanie.
Kryteria
To jest golf golfowy , więc wygrywa najkrótszy program w bajtach! Wszystkie więzi zostaną zerwane przez faworyzowanie wcześniejszych zgłoszeń; obowiązują standardowe luki. Najlepsza przesłana odpowiedź zostanie zaakceptowana 9 października 2016 r. I będzie aktualizowana za każdym razem, gdy zostaną podane lepsze odpowiedzi.
0011
Dla 8