介绍
甲格雷码是二进制表示的替代,其中许多是通过切换只有一个位,而不是比特的可变量的递增。以下是一些格雷码及其十进制和二进制等效项:
 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
格雷码的循环位模式
有时称为“反射二进制”,每次更改最低位的特性很容易实现:对于每列,从最低有效位开始,使用循环位模式:
bit 0: 0110011001100110011001100110011001100110011001100110011001100110
bit 1: 0011110000111100001111000011110000111100001111000011110000111100
bit 2: 0000111111110000000011111111000000001111111100000000111111110000
bit 3: 0000000011111111111111110000000000000000111111111111111100000000
bit 4: 0000000000000000111111111111111111111111111111110000000000000000
bit 5: 0000000000000000000000000000000011111111111111111111111111111111
...等等。
目的
给定一个未填充的格雷码输入字符串,请通过在序列中交替一个字符或在a前面加上1(当递增到下一个2的幂时)来递增格雷码,然后将结果作为未填充的格雷码输出。
注意事项
- 不必担心采用0或输入空字符串。
- 最低的输入为1,除了环境所施加的内存限制之外,字符串长度没有上限。
- 所谓非填充字符串,是指0在输入或输出中将没有前导或尾随空格(除了可选的尾随换行符),并且也没有前导s。
I / O格式
可接受以下格式的输入和输出格式,但建议使用字符串作为其他格式:
- 最重要的“位”在前
- 非填充字符数组或ASCII串'1'S和'0'小号
- 1s和- 0s的非填充整数数组
- 非填充布尔数组
不允许的内容:
- 最低有效“位”在前
- 十进制,二进制或一元整数
- 固定长度数据结构
- 不可打印ASCII索引的字符数组或字符串,1以及0
测验
input -> output
1 -> 11
11 -> 10
111 -> 101
1011 -> 1001
1111 -> 1110
10111 -> 10110
101100 -> 100100
100000 -> 1100000
可以根据要求添加更多测试。
标准
这是代码高尔夫,所以最短的程序以字节为单位!所有关系将因赞成较早提交而破裂。标准漏洞适用。最佳提交答案将在2016年10月9日被接受,并在给出更好答案时进行更新。
0011