±1 or ±½ of course :)
Sorry didn't read all, just saw that -n/2 ... 0 ... n/2.
For odd n it's i:<.-:n

   i:<.-:5
_2 _1 0 1 2

On Tue, Dec 22, 2015 at 8:20 PM, Moon S <[email protected]> wrote:

> > 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 <[email protected]>
> wrote:
>
>> Thanks Thomas, works very well!
>>
>> > From: [email protected]
>> > Date: Tue, 22 Dec 2015 12:14:31 -0500
>> > To: [email protected]
>> > 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 <[email protected]>
>> 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