OFFSET
0,3
COMMENTS
This sequence is a self-inverse permutation of nonnegative integers.
LINKS
Rémy Sigrist, Table of n, a(n) for n = 0..8192
Rémy Sigrist, Colored scatterplot of (n, a(n)) for n = 0..2^18-1 (where the color is function of A005811(n))
FORMULA
EXAMPLE
For n = 150:
- the binary representation of 150 is "10010110",
- we have three runs of zeros: "00", "0" and "0",
- we exchange the first and the third run, and the second remains in place,
- we obtain: "10101100",
- hence a(150) = 172.
MATHEMATICA
a[n_] := Module[{s=Split[IntegerDigits[n, 2]]}, m=Length[s]; m2=m-Mod[m, 2]; If[m2>0, ind=Riffle[Range[1, m, 2], Range[m2, 1, -2]]; FromDigits[Flatten[s[[ind]]], 2], n]]; Array[a, 100, 0] (* Amiram Eldar, Dec 12 2018 *)
PROG
(PARI) a(n) = {
my (r=n, z=[], v=0, p=1, i=0);
while (r, my (l=valuation(r+(r%2), 2)); if (r%2==0, z=concat(l, z)); r\=2^l);
while (n, my (l=valuation(n+(n%2), 2)); if (n%2, v+=(2^l-1)*p; p*=2^l, p*=2^z[i++]); n\=2^l);
return (v);
}
CROSSREFS
KEYWORD
AUTHOR
Rémy Sigrist, Dec 09 2018
STATUS
approved