介绍
甲格雷码是二进制表示的替代,其中许多是通过切换只有一个位,而不是比特的可变量的递增。以下是一些格雷码及其十进制和二进制等效项:
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'
小号 1
s和0
s的非填充整数数组- 非填充布尔数组
不允许的内容:
- 最低有效“位”在前
- 十进制,二进制或一元整数
- 固定长度数据结构
- 不可打印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