TRUE
if the square is magic, semimagic, panmagic, associative,
normal. If argument give.answers
is TRUE
, also returns
additional information about the sums.is.magic(m, give.answers = FALSE, FUN=sum, boolean=FALSE)
is.panmagic(m, give.answers = FALSE, FUN=sum, boolean=FALSE)
is.semimagic(m, give.answers = FALSE, FUN=sum, boolean=FALSE)
is.associative(m)
is.normal(m)
is.mostperfect(m,give.answers=FALSE)
is.2x2.correct(m,give.answers=FALSE)
is.bree.correct(m,give.answers=FALSE)
is.latin(m,give.answers=FALSE)
TRUE
meaning return additional
information about the sums (see details).TRUE
meaning that the square is
deemed magic, semimagic, etc, if all applications of FUN
evaluate to TRUE
. If boolean
is FALSE
, square
m
is magic etc TRUE
if the square is semimagic, etc.
If give.answers
is taken as an argument and is TRUE
, return a
list of at least five elements. The first element of the list is the
answer: it is TRUE
if the square is (semimagic, magic,
panmagic) and FALSE
otherwise.
Elements 2-5 give the result of a call to allsums()
, viz: rowwise
and columnwise sums; and broken major (ie NW-SE) and minor (ie NE-SW)
diagonal sums. Function is.bree.correct()
also returns the sums of
elements distant $n/2$ along a major diagonal
(diag.sums
); and function is.2x2.correct()
returns the
sum of each $2\times 2$ submatrix (tbt.sums
); for
other size windows use subsums()
directly.
Function is.mostperfect()
returns both of these.
A magic square is a semimagic square with the sum of both unbroken diagonals equal to the magic constant.
A panmagic square is a magic square all of whose broken diagonals sum to the magic constant. Ollerenshaw calls this a ``pandiagonal'' square.
A most perfect square has all 2-by-2 arrays anywhere within the
square summing to $2S$ where $S=n^2+1$; and all pairs
of integers $n/2$ distant along the same major (NW-SE) diagonal
sum to $S$ (note that the $S$ used here differs from
Ollerenshaw's because her squares are numbered starting at zero). The
first condition is tested by is.2x2.correct
and the second
by is.bree.correct
.
All most perfect squares are panmagic.
A normal square is one that contains $n^2$ consecutive integers (typically starting at 0 or 1).
An associative square is a magic square in
which
$a_{i,j}+a_{n+1-i,n+1-j}=n^2+1$.
Note that an associative semimagic square is magic; see also
is.square.palindromic()
. The definition extends to magic
hypercubes: a hypercube a
is associative if a+arev(a)
is
constant.
A latin square of size $n\times n$ is one in which
each column and each row comprises the integers 1 to n (not
necessarily in that order). Function is.latin()
is a wrapper
for is.latinhypercube()
because there is no natural way to
present the extra information given when give.answers
is
TRUE
in a manner consistent with the other functions documented
here.
minmax
,is.perfect
,is.semimagichypercube
is.magic(magic(4))
is.magic(diag(9),FUN=max) #should be TRUE
stopifnot(is.magic(magic(3:8)))
is.panmagic(panmagic.4())
is.panmagic(panmagic.8())
data(Ollerenshaw)
is.mostperfect(Ollerenshaw)
proper.magic <- function(m){is.magic(m) & is.normal(m)}
proper.magic(magic(20))
Run the code above in your browser using DataLab