前書き
A グレイコード番号は1ビットだけではなく、ビットの可変量を切り替えるだけインクリメントされたバイナリ表現に対する代替です。以下に、10進数および2進数に対応するいくつかのグレーコードを示します。
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
グレイコードのサイクリックビットパターン
「反射バイナリ」と呼ばれることもありますが、一度に1ビットのみを変更する特性は、最下位ビットから始まる各列の循環ビットパターンで簡単に実現できます。
bit 0: 0110011001100110011001100110011001100110011001100110011001100110
bit 1: 0011110000111100001111000011110000111100001111000011110000111100
bit 2: 0000111111110000000011111111000000001111111100000000111111110000
bit 3: 0000000011111111111111110000000000000000111111111111111100000000
bit 4: 0000000000000000111111111111111111111111111111110000000000000000
bit 5: 0000000000000000000000000000000011111111111111111111111111111111
...等々。
目的
グレーコードの非パディング入力文字列が与えられた1
場合、シーケンス内の単一の文字を変更するか(次の2の累乗にインクリメントする場合)を追加することによりグレーコードをインクリメントし、結果をパディングなしのグレイコードとして出力します。
注意事項
0
入力として、または空の文字列を受け取ることを心配しないでください。- 最小の入力はになり
1
、環境によって課されるメモリ制限以外の文字列長の上限はありません。 - パディングされていない文字列とは、先頭または末尾の空白(オプションの末尾の改行以外)がなく
0
、入力または出力に先頭のs がないことを意味しています。
I / Oフォーマット
次の形式は、入力および出力の形式として受け入れられますが、文字列は他の形式よりも推奨されます。
- 最も重要な「ビット」が最初
- 非埋め込み文字配列またはASCII
'1'
sおよび'0'
sの文字列 1
sおよび0
sの非埋め込み整数配列- パディングされていないブール配列
許可されていないもの:
- 最下位の「ビット」が最初
- 10進、2進、または単項整数
- 固定長データ構造
- 非印字可能なASCIIインデックスの文字列または文字列
1
と0
テスト
input -> output
1 -> 11
11 -> 10
111 -> 101
1011 -> 1001
1111 -> 1110
10111 -> 10110
101100 -> 100100
100000 -> 1100000
リクエストにより、さらにテストを追加できます。
基準
これはcode-golfなので、バイト単位の最短プログラムが勝ちです!以前の提出を支持することにより、すべての関係が壊れます。標準的な抜け穴が適用されます。最良の回答は2016年10月9日に受け付けられ、より適切な回答が提供されるたびに更新されます。
0011
8