cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A163332 Self-inverse permutation of the integers for constructing the Peano curve in an N X N grid.

Original entry on oeis.org

0, 1, 2, 5, 4, 3, 6, 7, 8, 15, 16, 17, 14, 13, 12, 9, 10, 11, 18, 19, 20, 23, 22, 21, 24, 25, 26, 47, 46, 45, 48, 49, 50, 53, 52, 51, 44, 43, 42, 39, 40, 41, 38, 37, 36, 29, 28, 27, 30, 31, 32, 35, 34, 33, 54, 55, 56, 59, 58, 57, 60, 61, 62, 69, 70, 71, 68, 67, 66, 63, 64, 65
Offset: 0

Views

Author

Antti Karttunen, Jul 29 2009

Keywords

Comments

The integers [0,(3^k)-1] are confined to range [0,(3^k)-1].
From Kevin Ryde, Sep 04 2020: (Start)
To calculate a(n), write n in ternary digits n[k],..,n[0], where n[0] is the least significant digit. Then the ternary digits of a(n) are a[j] = k^{n[j+1]+n[j+3]+...}(n[j]) where Peano's complement operator k^{s}(d) = d if s even or 2-d if s odd.
A single complement is k(d) = 2-d and the "exponent" is repeats k(k(k(...))). Sum s = n[j+1] + n[j+3] + ... is every second digit above j, so digit j flips 0 <-> 2 when an odd number of odd digits (1's) among these. The complement does not change digit parity so a second transformation re-complements back to the original digits and so self-inverse a(a(n)) = n.
Peano's curve is formed by digits of a(n) put alternately to x and y coordinates, so a(n) maps between the Peano curve the ternary Z-order curve per the formulas in A163528, A163529.
(End)

Crossrefs

Coordinates using this transform: A163528, A163529.
A163334 & A163336 give two variants of the Peano curve in an N X N grid.
Cf. A163355 (Hilbert curve).

Programs

  • Mathematica
    a[n_] := FromDigits[With[{d = Reverse@IntegerDigits[n, 3]}, Reverse@Table[
      If[EvenQ@Total@d[[j+1 ;; ;; 2]], d[[j]], 2-d[[j]]], {j, Length@d}]], 3];
    Array[a, 100] (* Andrey Zabolotskiy, Apr 08 2021, after Kevin Ryde *)
  • PARI
    a(n) = my(v=digits(n,3)); for(start=2,3, my(s=0); forstep(i=start,#v,2, s+=v[i-1]; if(s%2,v[i]=2-v[i]))); fromdigits(v,3); \\ Kevin Ryde, Sep 04 2020

Formula

a(n) = A163327(A163333(A163327(n))).

Extensions

Name corrected by Kevin Ryde, Aug 27 2020