prefix=: 4 : '(->:i.-<.x%2)}.&.> <  x {.y'
suffix=: 4 : '( >:i. <.x%2)}.&.> <(-x){.y'
sw=: prefix , <\ , suffix

d=: 5 10 7 8 9 2 1 100 _1 4 3
z=: 5 10 7; 5 10 7 8; 5 10 7 8 9; 10 7 8 9 2; 7 8 9 2 1; 8 9 2 1 100; 9 2 1 100 
_1; 2 1 100 _1 4; 1 100 _1 4 3; 100 _1 4 3; _1 4 3

   z -: 5 sw d
1

I am not sure what is supposed to happen if n
is greater than the length of the data.

The order of the arguments is switched based on the
principle used for J primitive dyads:  x&func is 
expected to be a more useful function than func&y .



----- Original Message -----
From: June Kim <[EMAIL PROTECTED]>
Date: Tuesday, January 30, 2007 5:39 pm
Subject: [Jprogramming] sliding window

> Suppose the following data is given
> 
>   d=: 5 10 7 8 9 2 1 100 _1 4 3
> 
> Now suppose a verb that moves a sliding window through the data
> 
>   d sw 5
> 
> The size of the window is always odd. For each item in the given data,
> the window should locate it at the middle point of the window. For
> some items that's nearby boundaries, the window size could be smaller
> than the given.
> 
> The result should be
> 
> 5 10 7; 5 10 7 8; 5 10 7 8 9; 10 7 8 9 2; 7 8 9 2 1; 8 9 2 1 100; 
> 9 2
> 1 100 _1; 2 1 100 _1 4; 1 100 _1 4 3; 100 _1 4 3; _1 4 3
> 
> Middle points for the window are 5, 10, 7 ..., 4, 3
> 
> What is an easy way for sw?
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to