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.
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
Links
Programs
-
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 *)
-
PARI
a(n) = bitxor(n, if(n>3, bitand(n<<1, bitneg(0,logint(n,2))))); \\ Kevin Ryde, Jul 17 2021
-
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]<
-
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
Comments