%I #47 Jun 08 2021 13:53:11
%S 0,0,1,1,2,3,3,2,2,3,3,2,1,1,0,0,0,1,1,0,0,0,1,1,2,2,3,3,3,2,2,3,4,5,
%T 5,4,4,4,5,5,6,6,7,7,7,6,6,7,7,7,6,6,5,4,4,5,5,4,4,5,6,6,7,7,8,9,9,8,
%U 8,8,9,9,10,10,11,11,11,10,10,11,12,12,13,13,14,15,15,14,14,15,15,14
%N Hilbert's Hamiltonian walk on N X N projected onto x axis: m(3).
%C This is the X-coordinate of the n-th term in Hilbert's Hamiltonian walk A163359 and the Y-coordinate of its transpose A163357.
%H Antti Karttunen, <a href="/A059252/b059252.txt">Table of n, a(n) for n = 0..65535</a>
%H Joerg Arndt, <a href="http://www.jjj.de/fxt/#fxtbook">Matters Computational (The Fxtbook)</a>, section 1.31.1 "The Hilbert curve", page 85, lin2hilbert.
%H Michael Beeler, R. William Gosper, and Richard Schroeppel, <a href="https://dspace.mit.edu/handle/1721.1/6086">HAKMEM</a>, MIT Artificial Intelligence Laboratory report AIM-239, February 1972. Item 115 by Gosper, page 52. Also <a href="http://www.inwap.com/pdp10/hbaker/hakmem/topology.html#item115">HTML transcription</a>. (To use algorithm S or the state table, pad n with high 0-bits to a multiple of 4 bits.)
%H J. Shallit, <a href="https://arxiv.org/abs/2106.01062">Hilbert's spacefilling curve described by automatic, regular, and synchronized sequences</a>, arXiv:2106.01062 [cs.FL], June 2 2021.
%H <a href="/index/Con#coordinates_2D_curves">Index entries for sequences related to coordinates of 2D curves</a>
%F Initially [m(0) = 0, m'(0) = 0]; recursion: m(2n + 1) = m(2n).m'(2n).f(m'(2n), 2n).c(m(2n), 2n + 1); m'(2n + 1) = m'(2n).f(m(2n), 2n).f(m(2n), 2n).mir(m'(2n)); m(2n) = m(2n - 1).f(m'(2n - 1), 2n - 1).f(m'(2n - 1), 2n - 1).mir(m(2n - 1)); m'(2n) = m'(2n - 1).m(2n - 1).f(m(2n - 1), 2n - 1).c(m'(2n - 1), 2n); where f(m, n) is the alphabetic morphism i := i + 2^n [example: f(0 0 1 1 2 3 3 2 2 3 3 2 1 1 0 0, 2) = 4 4 5 5 6 7 7 6 6 7 7 6 5 5 4 4]; c(m, n) is the complementation to 2^n - 1 alphabetic morphism [example: c(0 0 1 1 2 3 3 2 2 3 3 2 1 1 0 0, 3) = 7 7 6 6 5 4 4 5 5 4 4 5 6 6 7 7]; and mir(m) is the mirror operator [example: mir(0 1 1 0 0 0 1 1 2 2 3 3 3 2 2 3) = 3 2 2 3 3 3 2 2 1 1 0 0 0 1 1 0].
%F a(n) = A002262(A163358(n)) = A025581(A163360(n)) = A059906(A163356(n)).
%e [m(1)=0 0 1 1, m'(1)= 0 1 10] [m(2) =0 0 1 1 2 3 3 2 2 3 3 2 1 1 0 0, m'(2)=0 1 1 0 0 0 1 1 2 2 3 3 3 2 2 3].
%o (C) void h(unsigned int *x, unsigned int *y, unsigned int l){
%o x[0] = y[0] = 0; unsigned int *t = NULL; unsigned int n = 0, k = 0;
%o for(unsigned int i = 1; i<l; i++){
%o switch(i>>(2*n)){
%o case 1: x[i] = y[i&k]; y[i] = x[i&k]+(1<<n); break;
%o case 2: x[i] = y[i&k]+(1<<n); y[i] = x[i&k]+(1<<n); break;
%o case 3: x[i] = (2<<n)-1-x[i&k]; y[i] = y[k-i&k]; break;
%o case 4: n++; k = (1<<(2*n))-1; t=x; x=y; y=t; x[i] = 0; y[i] = 1<<n; break;
%o default:;}}} /* _Jared Rager_, Jan 09 2021 */
%o (C++) See Fxtbook link.
%Y See also the y-projection, m'(3), A059253, as well as: A163539, A163540, A163542, A059261, A059285, A163547 and A163529.
%K nonn
%O 0,5
%A Claude Lenormand (claude.lenormand(AT)free.fr), Jan 23 2001
%E Extended by _Antti Karttunen_, Aug 01 2009