A163241 Simple self-inverse permutation: Write n in base 4, then replace each digit '2' with '3' and vice versa, then convert back to decimal.
0, 1, 3, 2, 4, 5, 7, 6, 12, 13, 15, 14, 8, 9, 11, 10, 16, 17, 19, 18, 20, 21, 23, 22, 28, 29, 31, 30, 24, 25, 27, 26, 48, 49, 51, 50, 52, 53, 55, 54, 60, 61, 63, 62, 56, 57, 59, 58, 32, 33, 35, 34, 36, 37, 39, 38, 44, 45, 47, 46, 40, 41, 43, 42, 64, 65, 67, 66, 68, 69, 71, 70
Offset: 0
Examples
43 in quaternary base (A007090) is written as '223' (2*16 + 2*4 + 3), which is then mapped to '332' = 3*16 + 3*4 + 2 = 62, thus a(43) = 62, and likewise a(62) = 43.
Links
Programs
-
C
uint32_t a(uint32_t n) { return n ^ ((n >> 1) & 0x55555555); } // Falk Hüffner, Jan 22 2022
-
Maple
a:= proc(n) option remember; `if`(n=0, 0, a(iquo(n, 4, 'r'))*4+[0, 1, 3, 2][r+1]) end: seq(a(n), n=0..71); # Alois P. Heinz, Jan 25 2022
-
Mathematica
Table[FromDigits[IntegerDigits[n,4]/.{2->a,3->b}/.{a->3,b->2},4],{n,0,75}] (* Harvey P. Dale, Nov 29 2011 *)
-
PARI
f(d) = if (d==2, 4, if (x==d, 2, d)); a(n) = fromdigits(apply(f, digits(n, 4)), 4); \\ Michel Marcus, Jun 28 2017
-
Python
def a000695(n): n=bin(n)[2:] x=len(n) return sum([int(n[i])*4**(x - 1 - i) for i in range(x)]) def a059905(n): return sum([(n>>2*i&1)<Indranil Ghosh, Jun 26 2017
-
Scheme
(define (A163241 n) (+ (A000695 (A003987bi (A059905 n) (A059906 n))) (* 2 (A000695 (A059906 n)))))
Formula
Extensions
Edited by Charles R Greathouse IV, Nov 01 2009