%I #29 May 08 2021 11:24:19
%S 0,1,3,2,6,7,4,5,15,14,13,12,11,10,9,8,24,25,26,27,28,29,30,31,16,17,
%T 18,19,20,21,22,23,57,56,59,58,61,60,63,62,49,48,51,50,53,52,55,54,41,
%U 40,43,42,45,44,47,46,33,32,35,34,37,36,39,38,106,107,104,105,110,111,108,109,98,99,96,97,102,103,100
%N Self-inverse permutation of natural numbers: a(0) = 0, a(1) = 1, and for n > 1, if A065620(n) < 0, a(n) = A065621(1+a(-(A065620(n)))), otherwise a(n) = A048724(a(A065620(n)-1)).
%C This is an instance of entanglement permutation, where complementary pair A048724/A065621 is entangled with the same pair in the opposite order: A065621/A048724, with a(1) set to 1.
%C Note how this is A193231-conjugate of A054429.
%H Antti Karttunen, <a href="/A245812/b245812.txt">Table of n, a(n) for n = 0..2047</a>
%H <a href="/index/Bi#binary">Index entries for sequences related to binary expansion of n</a>
%H <a href="/index/Per#IntegerPermutation">Index entries for sequences that are permutations of the natural numbers</a>
%F a(0) = 0, a(1) = 1, and for n > 1, if A065620(n) < 0, a(n) = A065621(1+a(-(A065620(n)))), otherwise a(n) = A048724(a(A065620(n)-1)).
%F Equally:
%F a(0) = 0, a(1) = 1, and for n > 1, if A010060(n) = 0, a(n) = A065621(1+a(A246159(n))), otherwise a(n) = A048724(a(A246160(n)-1)). [Note how A246159 is an inverse function for A048724, while A246160 is an inverse function for A065621].
%F As a composition of related permutations:
%F a(n) = A193231(A234025(n)).
%F a(n) = A234026(A193231(n)).
%F a(n) = A193231(A054429(A193231(n))).
%o (Scheme, with memoizing-macro definec, two equivalent definitions)
%o (definec (A245812 n) (cond ((<= n 1) n) ((negative? (A065620 n)) (A065621 (+ 1 (A245812 (- (A065620 n)))))) (else (A048724 (A245812 (- (A065620 n) 1))))))
%o (definec (A245812 n) (cond ((<= n 1) n) ((zero? (A010060 n)) (A065621 (+ 1 (A245812 (A246159 n))))) (else (A048724 (A245812 (- (A246160 n) 1))))))
%o (PARI)
%o a048724(n) = bitxor(n, 2*n);
%o a065620(n) = if(n<3, n, if(n%2, -2*a065620((n - 1)/2) + 1, 2*a065620(n/2)));
%o a065621(n) = bitxor(n, 2*(n - bitand(n, -n)));
%o a(n) = x=a065620(n); if(n<2, n, if(x<0, a065621(1 + a(-x)), a048724(a(x - 1))));
%o for(n=0, 100, print1(a(n),", ")) \\ _Indranil Ghosh_, Jun 07 2017
%o (Python)
%o def a048724(n): return n^(2*n)
%o def a065620(n): return n if n<3 else 2*a065620(n//2) if n%2==0 else -2*a065620((n - 1)//2) + 1
%o def a065621(n): return n^(2*(n - (n & -n)))
%o def a(n):
%o x=a065620(n)
%o return n if n<2 else a065621(1 + a(-x)) if x<0 else a048724(a(x - 1))
%o print([a(n) for n in range(101)]) # _Indranil Ghosh_, Jun 07 2017
%Y Similar or related permutations: A193231, A234025, A234026, A246211, A236854, A235491, A054429, A234027.
%Y Cf. A010060, A048724, A065620, A065621, A246159, A246160.
%K nonn
%O 0,3
%A _Antti Karttunen_, Aug 20 2014