# NAME

Math::MagicSquare - Magic Square Checker and Designer

# SYNOPSIS

``````  use Math::MagicSquare;

\$a= Math::MagicSquare -> new ([num,...,num],
...,
[num,...,num]);
\$a->print("string");
\$a->printhtml();
\$a->printimage();
\$a->check();
\$a->rotation();
\$a->reflection();``````

# DESCRIPTION

The following methods are available:

## new

Constructor arguments are a list of references to arrays of the same length.

``````    \$a = Math::MagicSquare -> new ([num,...,num],
...,
[num,...,num]);``````

## check

This function can return 4 value

• 0: the Square is not Magic

• 1: the Square is a Semimagic Square (the sum of the rows and the columns is equal)

• 2: the Square is a Magic Square (the sum of the rows, the columns and the diagonals is equal)

• 3: the Square ia Panmagic Square (the sum of the rows, the columns, the diagonals and the broken diagonals is equal)

## print

Prints the Square on STDOUT. If the method has additional parameters, these are printed before the Magic Square is printed.

## printhtml

Prints the Square on STDOUT in an HTML format (exactly a inside a TABLE)

## printimage

Prints the Square on STDOUT in png format.

## rotation

Rotates the Magic Square of 90 degree clockwise

## reflection

Reflect the Magic Square

GD perl module.

# EXAMPLE

``````    use Math::MagicSquare;

\$A = Math::MagicSquare -> new ([8,1,6],
[3,5,7],
[4,9,2]);
\$A->print("Magic Square A:\n");
\$A->printhtml();
\$i=\$A->check();
if(\$i == 2) {print "This is a Magic Square.\n";}
\$A->rotation();
\$A->print("Rotation:\n");
\$A->reflection();
\$A->print("Reflection:\n");
\$A->printimage();

This is the output:
Magic Square A:
8     1     6
3     5     7
4     9     2
<TABLE border=3 width="2" height="2" cellpadding=1 cellspacing=1>
<TR>
<TD align=right><FONT size=+2><B>8</B></font></TD>
<TD align=right><FONT size=+2><B>1</B></font></TD>
<TD align=right><FONT size=+2><B>6</B></font></TD>
</TR>
<TR>
<TD align=right><FONT size=+2><B>3</B></font></TD>
<TD align=right><FONT size=+2><B>5</B></font></TD>
<TD align=right><FONT size=+2><B>7</B></font></TD>
</TR>
<TR>
<TD align=right><FONT size=+2><B>4</B></font></TD>
<TD align=right><FONT size=+2><B>9</B></font></TD>
<TD align=right><FONT size=+2><B>2</B></font></TD>
</TR>
</TABLE>
This is a Magic Square.
Rotation:
4     3     8
9     5     1
2     7     6
Reflection:
8     3     4
1     5     9
6     7     2``````

# AUTHOR

`````` Fabrizio Pivari fabrizio@pivari.com
http://www.pivari.com/``````
`````` Copyright 2003, Fabrizio Pivari fabrizio@pivari.com
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
Are you interested in a Windows cgi distribution?
Test http://www.pivari.com/squaremaker.html and contact me.``````

# Availability

`````` The latest version of this library is likely to be available from:
http://www.pivari.com/magicsquare.html
and at any CPAN mirror``````

`````` Do you like Magic Square?