login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

Permutation of integers for constructing Hilbert curve in N x N grid.
24

%I #12 Nov 22 2023 04:55:50

%S 0,1,3,2,14,15,13,12,4,7,5,6,8,11,9,10,16,19,17,18,20,21,23,22,30,29,

%T 31,28,24,25,27,26,58,57,59,56,54,53,55,52,60,61,63,62,50,51,49,48,32,

%U 35,33,34,36,37,39,38,46,45,47,44,40,41,43,42,234,235,233,232,236,239

%N Permutation of integers for constructing Hilbert curve in N x N grid.

%H A. Karttunen, <a href="/A163355/b163355.txt">Table of n, a(n) for n = 0..262143</a>

%H <a href="/index/Per#IntegerPermutation">Index entries for sequences that are permutations of the natural numbers</a>

%F a(0) = 0,

%F and given d=1, 2 or 3, then a((d*(4^i))+r)

%F = (4^i) + a(A057300(r)), if d=1 and i is even, or if d=2 and i is odd

%F = 2*(4^i) + a(A057300(r)), if d=3,

%F = 3*(4^i) + a((4^i)-1-r) in other cases.

%p A057300 := proc(n)

%p option remember;

%p `if`(n=0, 0, procname(iquo(n, 4, 'r'))*4+[0, 2, 1, 3][r+1])

%p end proc:

%p A163355 := proc(n)

%p option remember ;

%p local d,base4,i,r ;

%p if n <= 1 then

%p return n ;

%p end if;

%p base4 := convert(n,base,4) ;

%p d := op(-1,base4) ;

%p i := nops(base4)-1 ;

%p r := n-d*4^i ;

%p if ( d=1 and type(i,even) ) or ( d=2 and type(i,odd)) then

%p 4^i+procname(A057300(r)) ;

%p elif d= 3 then

%p 2*4^i+procname(A057300(r)) ;

%p else

%p 3*4^i+procname(4^i-1-r) ;

%p end if;

%p end proc:

%p seq(A163355(n),n=0..100) ; # _R. J. Mathar_, Nov 22 2023

%o (MIT Scheme:) (define (A163355 n) (let* ((i (floor->exact (/ (A000523 n) 2))) (dd (modulo (floor->exact (/ n (expt 4 i))) 4)) (r (if (zero? n) n (modulo n (expt 4 i))))) (cond ((zero? n) n) ((= 0 dd) (A163355 r)) ((= (+ 1 (modulo i 2)) dd) (+ (expt 4 i) (A163355 (A057300 r)))) ((= 3 dd) (+ (* 2 (expt 4 i)) (A163355 (A057300 r)))) (else (+ (* 3 (expt 4 i)) (A163355 (- (expt 4 i) 1 r)))))))

%o (PARI)

%o A057300(n) = { my(t=1, s=0); while(n>0, if(1==(n%4),n++,if(2==(n%4),n--)); s += (n%4)*t; n >>= 2; t <<= 2); (s); };

%o A163355(n) = if(!n,n,my(i = (#binary(n)-1)\2, f = 4^i, d = (n\f)%4, r = (n%f)); if(((1==d)&&!(i%2))||((2==d)&&(i%2)), f+A163355(A057300(r)), if(3==d,f+f+A163355(A057300(r)), (3*f)+A163355(f-1-r)))); \\ _Antti Karttunen_, Apr 14 2018

%Y Inverse: A163356. A163357 & A163359 give two variants of Hilbert curve in N x N grid. Cf. also A163332.

%Y Second and third "powers": A163905, A163915.

%Y In range [A000302(n-1)..A024036(n)] of this permutation, the number of cycles is given by A163910, number of fixed points seems to be given by A147600(n-1) (fixed points themselves: A163901). Max. cycle sizes is given by A163911 and LCM's of all cycle sizes by A163912.

%Y See also: A163890, A163894, A163902-A163903, A163914, A163485, A302843, A302845.

%K nonn

%O 0,3

%A _Antti Karttunen_, Jul 29 2009

%E Links to further derived sequences added by _Antti Karttunen_, Sep 21 2009