> NB. Creat a rotation vector from -n/2 ... 0 ... n/2

Try i: -: y

On Tue, Dec 22, 2015 at 7:50 PM, Richard Donovan <rsdono...@hotmail.com>
wrote:

> Thanks Thomas, works very well!
>
> > From: tmcguir...@gmail.com
> > Date: Tue, 22 Dec 2015 12:14:31 -0500
> > To: programm...@jsoftware.com
> > Subject: Re: [Jprogramming] Magic squares
> >
> > I haven't tried this in a while but here is one method from an APL book
> > transcribed into J
> >
> > NB. Magic Squares the APL/J way
> > NB. From APL An Interactive Approach by Gilman and Rose
> > NB.
> > NB. Problem 19 page 177
> > NB.
> > NB. A magic square of order n made up of the integers from
> > NB. 1 through n.
> > NB.
> > NB. In creating squares of odd order you can use a rotation
> > NB. vector constructed from n successive integers with 0 in
> > NB. the middle then using the vector to control the rotation
> > NB. of the rows and columns of a matrix created with
> > NB. successive integers (in J  i. n n)
> >
> > NB. rotr - this uses the rotate operator but sets it to rotate
> > NB.        an individual row. Otherwise it will try to rotate
> > NB.        the rows in the matrix as a whole interchanging full
> > NB.        rows rather than shifting the element in a row and
> > NB.        leaving the rows in place
> >    rotr =: |."0 1
> >
> > NB. rotc - rotate the elements in their respective columns.
> > NB.        there is no way to tell J to specifically operate on
> > NB.        the columns individually so you need to use the
> > NB.        transpose op. (|:) to turn the columns into rows by
> > NB.        using the &. operator it will transpose, run the rotate
> > NB.        then transpose back
> >    rotc =: |."0 1&.|:
> >
> >
> > NB. MS - magic square routine no bounds check just input an
> > NB.      odd number greater than or equal to 3
> >
> >    MS =: 3 : 0
> > NB. Create an initial square matrix order n of numbers 1 to n
> > z =. 1 + i. y,y
> >
> > NB. Creat a rotation vector from -n/2 ... 0 ... n/2
> > q =. ( - (<. 0.5 * y))+ i.y
> >
> > NB. rotate the rows of the matrix my q then rotate the columns
> > NB. of the answer by q. You will get a new matrix that is a
> > NB. magic square
> > z1 =. q rotc q rotr z
> > )
> >
> > Tom McGuire
> >
> > On Dec 22, 2015, at 9:44 AM, Richard Donovan <rsdono...@hotmail.com>
> wrote:
> >
> > > Is there a J routine to construct magic squares of side n?
> > >
> > > Thanks in advance.
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to