as.standard {magic} | R Documentation |
Transforms a magic square or magic hypercube into Frenicle's standard form
as.standard(a) is.standard(a)
a |
Magic square or hypercube (array) to be tested or transformed |
For a square, as.standard()
transforms a magic square into
Frenicle's standard form. The four numbers at each of the four corners
are determined. First, the square is rotated so the smallest of the
four is at the upper left. Then, element [1,2]
is compared with
element[2,1]
and, if it is larger, the transpose is taken.
Thus all eight rotated and transposed versions of a magic square have the same standard form.
The square returned by magic()
is in standard form.
For hypercubes, the algorithm is generalized. Firstly, the hypercube is
reflected so that a[1,1,...,1,1]
is the smallest of the
2^d corner elements (eg a[1,n,1,...,1,1]
).
Next, aperm()
is called so that
a[1,1,...,1,2] < a[1,1,...,2,1] < ... < a[2,1,...,1,1]
.
Note that the inequalities are strict as hypercubes are assumed to be normal.
is.standard()
returns TRUE
if the magic square or
hypercube is in standard form. is.standard()
and
as.standard()
check for neither magicness nor normality (use
is.magic
and is.normal
for this).
Robin K. S. Hankin
is.standard(magic.2np1(4)) as.standard(magic.4n(3)) as.standard(magichypercube.4n(1,5))