login
A231550
Permutation of nonnegative integers: for each bit[i] in the binary representation, except the most and the least significant bits, set bit[i] = bit[i] XOR bit[i-1], where bit[i-1] is the less significant bit, XOR is the binary logical exclusive or operator.
4
0, 1, 2, 3, 4, 7, 6, 5, 8, 11, 14, 13, 12, 15, 10, 9, 16, 19, 22, 21, 28, 31, 26, 25, 24, 27, 30, 29, 20, 23, 18, 17, 32, 35, 38, 37, 44, 47, 42, 41, 56, 59, 62, 61, 52, 55, 50, 49, 48, 51, 54, 53, 60, 63, 58, 57, 40, 43, 46, 45, 36, 39, 34, 33, 64, 67, 70, 69, 76
OFFSET
0,3
COMMENTS
This permutation transforms the enumeration system of positive irreducible fractions A020651/A020650 into the enumeration system A002487/A002487' (Calkin-Wilf), and enumeration system A245327/A245326 into A162911/A162912 (Drib). - Yosu Yurramendi, Jun 16 2015
FORMULA
a(A231551(n)) = A231551(a(n)) = n.
a(n) = A284460(A258996(n)) = A092569(A284460(n)), n > 0. - Yosu Yurramendi, Apr 10 2017
MATHEMATICA
Join[{0, 1}, Table[d = IntegerDigits[n, 2]; FromDigits[Join[{d[[1]]}, BitXor[Most@Rest@d, Rest@Rest@d], {d[[-1]]}], 2], {n, 2, 68}]] (* Ivan Neretin, Dec 28 2016 *)
PROG
(Python)
for n in range(99):
bits = [0]*64
orig = [0]*64
l = int.bit_length(int(n))
t = n
for i in range(l):
bits[i] = orig[i] = t&1
t>>=1
for i in range(1, l-1): bits[i] ^= orig[i-1] # A231550
#for i in range(1, l-1): bits[i] ^= bits[i-1] # A231551
#for i in range(l-1): bits[i] ^= orig[i+1] # A003188
#for i in range(1, l): bits[l-1-i] ^= bits[l-i] # A006068
t = 0
for i in range(l): t += bits[i]<<i
print(str(t), end=', ')
(R)
a <- 1
maxlevel <- 8 # by choice
#
for(m in 0:maxlevel) for(k in 0:(2^m-1)){
a[2^(m+1) +2*k] <- 2*a[2^m+k]
a[2^(m+2)-1-2*k] <- 2*a[2^m+k] + 1
}
(a <- c(0, a))
# Yosu Yurramendi, Apr 10 2017
(PARI) a(n) = bitxor(n, if(n>3, bitand(n<<1, bitneg(0, logint(n, 2))))); \\ Kevin Ryde, Jul 17 2021
CROSSREFS
KEYWORD
nonn,look,base,easy
AUTHOR
Alex Ratushnyak, Nov 10 2013
STATUS
approved