%I #69 Jan 06 2024 08:53:53
%S 1,3,2,5,7,6,4,9,11,10,13,15,14,12,8,17,19,18,21,23,22,20,25,27,26,29,
%T 31,30,28,24,16,33,35,34,37,39,38,36,41,43,42,45,47,46,44,40,49,51,50,
%U 53,55,54,52,57,59,58,61,63,62,60,56,48,32,65
%N Reversed binary words in reversed lexicographic order.
%C The lexicographic order of the subsets of the 4-element set is:
%C 1... {0}
%C 11.. {0, 1}
%C 111. {0, 1, 2}
%C 1111 {0, 1, 2, 3}
%C 11.1 {0, 1, 3}
%C 1.1. {0, 2}
%C 1.11 {0, 2, 3}
%C 1..1 {0, 3}
%C .1.. {1}
%C .11. {1, 2}
%C .111 {1, 2, 3}
%C .1.1 {1, 3}
%C ..1. {2}
%C ..11 {2, 3}
%C ...1 {3}
%C The strings of dots and ones interpreted as binary words give this sequence:
%C ...1 1
%C ..11 3
%C ..1. 2
%C .1.1 5
%C .111 7
%C .11. 6
%C .1.. 4
%C 1..1 9
%C 1.11 11
%C 1.1. 10
%C 11.1 13
%C 1111 15
%C 111. 14
%C 11.. 12
%C 1... 8
%C The index of the lowest set bit of a(n) is A082850(n) - 1. - _Joerg Arndt_, Apr 06 2011
%C The sequence is a permutation of the positive integers. - _Joerg Arndt_, Jan 31 2012
%C This is the output of the depth-first search with postordering in the binomial tree described in A129760 where the children of every node are visited in the ascending order of their values. Descending order cannot be used because 0 has infinite number of children; using preordering instead of postordering gives the natural numbers in their standard order. - _Andrey Zabolotskiy_, Sep 06 2019
%D Donald E. Knuth, The Art of Computer Programming, Volume 4A, section 7.2.1.3 exercise 19 (binomial tree traversed in post-order).
%H Alois P. Heinz, <a href="/A108918/b108918.txt">Table of n, a(n) for n = 1..8192</a>
%H Joerg Arndt, <a href="http://www.jjj.de/fxt/#fxtbook">Matters Computational (The Fxtbook)</a>, section 1.26 "Binary words in lexicographic order for subsets", pp.70-74
%H Joerg Arndt, <a href="http://arxiv.org/abs/1405.6503">Subset-lex: did we miss an order?</a>, arXiv:1405.6503 [math.CO], 2014-2015.
%H <a href="/index/Per#IntegerPermutation">Index entries for sequences that are permutations of the natural numbers</a>
%F a(2^(m+1)-1) = 2^m; a(2^m+k) = a(k+1) + 2^m for 0 <= k < 2^m-1. - _Andrey Zabolotskiy_, Oct 10 2019
%t n=6; Reverse[ SortBy[ Range[2^n - 1], PadRight[ Flatten[ Position[ IntegerDigits[#, 2, n], 1] ], n] &]] (* _Birkas Gyorgy_, Jul 09 2012 *)
%o (C++) /* To generate a(k): */
%o ulong negidx2lexrev(ulong k)
%o {
%o ulong z = 0;
%o ulong h = highest_bit(k);
%o while ( k )
%o {
%o while ( 0==(h&k) ) h >>= 1;
%o z ^= h;
%o ++k;
%o k &= h - 1;
%o }
%o return z;
%o }
%o /* Where highest_bit(x) shall return the word with
%o just the highest bit set (and zero for zero x). */
%o (PARI) a(n) = my(s); forstep(k=logint(n,2),0,-1, if(bittest(n,k), n++;s=k)); n-(1<<s); \\ _Kevin Ryde_, Mar 31 2020
%o (Python)
%o def a(n):
%o s = 0
%o for k in range(n.bit_length()-1, -1, -1):
%o if n & (1 << k): n += 1; s = k
%o return n - (1 << s)
%o print([a(n) for n in range(1, 65)]) # _Michael S. Branicky_, Aug 15 2022 after _Kevin Ryde_
%Y The sequence of lowest bits is A079559. The sequence of fixed points (i.e. a(n)=n) is A079471. The inverse permutation is A118319.
%Y The corresponding Gray code is described in A217262.
%K nonn
%O 1,2
%A _Joerg Arndt_, Jul 20 2005