Alternative and more C-ish calculation of the
quantity p :

   y=: 10
   n=: <:2*y
   p=. (2!1+i.n) - (-n){.2*2!i.&.<:y
   p
0 1 3 6 10 15 21 28 36 45 55 64 72 79 85 90 94 97 99

   (i.y),2+i.-.y
0 1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2

   +/\(i.y),2+i.-.y
0 1 3 6 10 15 21 28 36 45 55 64 72 79 85 90 94 97 99
   p -: +/\(i.y),2+i.-.y
1



----- Original Message -----
From: Roger Hui <[EMAIL PROTECTED]>
Date: Saturday, November 25, 2006 10:43 am
Subject: Re: [Jprogramming] zig-zag order

> zz is Oleg's solution.  f can be rendered readily 
> in C.
> 
> zz=: ($ [: /:@; [: <@|.`</. i.)@,~
> 
> f=: 3 : 0
> n=. <:2*y
> p=. (2!1+i.n) - (-n){.2*2!i.&.<:y  NB. <.//.zz y
> q=. }.<:p,>:{:p                    NB. >.//.zz y
> z=. (y,y)$0
> for_i. i.y do.
>  for_j. i.y do.
>   k=. i+j
>   c=. 0>.k-y-1
>   if. 2|k do. z=. z (<i,j)}~ (k{p)+i-c
>   else.       z=. z (<i,j)}~ (k{q)-i-c  end.
>  end.
> end.
> )
> 
>   f 5
> 0  1  5  6 14
> 2  4  7 13 15
> 3  8 12 16 21
> 9 11 17 20 22
> 10 18 19 23 24
> 
>   (f -: zz)"0 i.20
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
> 
> 
> 
> ----- Original Message -----
> From: bill lam <[EMAIL PROTECTED]>
> Date: Saturday, November 25, 2006 9:00 am
> Subject: Re: [Jprogramming] zig-zag order
> 
> > bill lam wrote:
> > > Thanks to everyone for input. I can see how to use /. and /: now.
> > > 
> > > btw
> > > 
> > sorry hitting the send button accidentally.
> > 
> > btw anyone knows how to do it in C or have a pointer?  May be 
> this 
> > serves as an
> > example of "C for J Programmers" :-)


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to