Elias omega编码是一种通用代码,它可以将任意大小的正整数编码成一个比特流。
给定正整数N,编码算法如下:
在类似Python的伪代码中:
n = input()
s = "0"
while n > 1:
# bin(n) is assumed to give a plain string of bits, without "0b" prefix
s = bin(n) + s
n = len(bin(n)) - 1
output(s)数字1被编码到一个0中。
数字21以块的形式编码到10100101010或10 100 10101 0中,其中每个块按以下顺序添加到输出流中:首先默认情况下为"0“,然后是二进制的21,然后是4(位长为21减去1),然后是2,然后停止。
给定一个正整数N,输出它的Elias代码。
您可以以任何方便的格式获取输入数字N,包括其二进制表示形式。
输出必须是平坦的位流的有效表示形式,其中包括:
不允许反向输出比特或输出嵌套位结构(例如,["10", "100", "10101", "0"]用于21)。
以字节为单位的最短代码获胜。
N => Omega(N)
1 0
2 100
3 110
4 101000
5 101010
6 101100
7 101110
8 1110000
12 1111000
16 10100100000
21 10100101010
100 1011011001000
345 1110001010110010
1000 11100111111010000
6789 11110011010100001010
10000 111101100111000100000
1000000 1010010011111101000010010000000这是OEIS A281193。
发布于 2021-02-16 08:58:01
发布于 2021-02-16 03:24:14
https://codegolf.stackexchange.com/questions/219109
复制相似问题