A108918 Reversed binary words in reversed lexicographic order.
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, 31, 30, 28, 24, 16, 33, 35, 34, 37, 39, 38, 36, 41, 43, 42, 45, 47, 46, 44, 40, 49, 51, 50, 53, 55, 54, 52, 57, 59, 58, 61, 63, 62, 60, 56, 48, 32, 65
Offset: 1
Keywords
References
- Donald E. Knuth, The Art of Computer Programming, Volume 4A, section 7.2.1.3 exercise 19 (binomial tree traversed in post-order).
Links
- Alois P. Heinz, Table of n, a(n) for n = 1..8192
- Joerg Arndt, Matters Computational (The Fxtbook), section 1.26 "Binary words in lexicographic order for subsets", pp.70-74
- Joerg Arndt, Subset-lex: did we miss an order?, arXiv:1405.6503 [math.CO], 2014-2015.
- Index entries for sequences that are permutations of the natural numbers
Crossrefs
Programs
-
Mathematica
n=6; Reverse[ SortBy[ Range[2^n - 1], PadRight[ Flatten[ Position[ IntegerDigits[#, 2, n], 1] ], n] &]] (* Birkas Gyorgy, Jul 09 2012 *)
-
PARI
a(n) = my(s); forstep(k=logint(n,2),0,-1, if(bittest(n,k), n++;s=k)); n-(1<
Kevin Ryde, Mar 31 2020 -
Python
def a(n): s = 0 for k in range(n.bit_length()-1, -1, -1): if n & (1 << k): n += 1; s = k return n - (1 << s) print([a(n) for n in range(1, 65)]) # Michael S. Branicky, Aug 15 2022 after Kevin Ryde
Formula
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
Comments