%I #12 Jan 18 2017 22:13:16
%S 1,8,9,20,21,22,23,192,193,194,195,196,197,198,199,400,401,402,403,
%T 404,405,406,407,408,409,410,411,412,413,414,415,832,833,834,835,836,
%U 837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857
%N The decimal representation of the Elias delta code for n (A281150(n)).
%H Indranil Ghosh, <a href="/A281225/b281225.txt">Table of n, a(n) for n = 1..10000</a>
%H J. Nelson Raja, P. Jaganathan and S. Domnic, <a href="http://dx.doi.org/10.17485/ijst/2015/v8i24/80242">A New Variable-Length Integer Code for Integer Representation and Its Application to Text Compression</a>, Indian Journal of Science and Technology, Vol 8(24), September 2015.
%e For n = 6, The Elias delta code for 6 is "10110" which is 22 in decimal. So, a(6) = 22.
%o (Python)
%o def unary(n):
%o ....return "1"*(n-1)+"0"
%o def elias_gamma(n):
%o ....if n==1:
%o ........return "1"
%o ....k=int(math.log(n, 2))
%o ....fp=unary(1+k) #fp is the first part
%o ....sp=n-2**(k) #sp is the second part
%o ....nb=k #nb is the number of bits used to store sp in binary
%o ....sp=bin(sp)[2:]
%o ....if len(sp)<nb:
%o ........sp=("0"*(nb-len(sp)))+sp
%o ....return fp+sp
%o def elias_delta(n):
%o ....if n==1:
%o ........return "1"
%o ....k=int(math.log(n, 2))
%o ....fp=elias_gamma(1+k)#fp is the first part
%o ....sp=n-2**(k) #sp is the second part
%o ....nb=k #nb is the number of bits used to store sp in binary
%o ....sp=bin(sp)[2:]
%o ....if len(sp)<nb:
%o ........sp=("0"*(nb-len(sp)))+sp
%o ....return fp+sp
%o def a(n):
%o ....return int(elias_delta(n),2)
%Y Cf. A171885 (Decimal representation of the Elias gamma code for n), A281150, A281223.
%K nonn,base
%O 1,2
%A _Indranil Ghosh_, Jan 18 2017
|