Hiya,
Thanks for your response Raul,
the verb was intended as a monad to be applied to arrays of arbitrary rank.
It removes the topmost item of each dimension.
Originally shave=: #@:$ 0&(0&|:@:}:@:]) ]
The purpose of the outermost 0& was to produce a phrase that would repeat
(0&|:@:}:@:]) a number #@:$ of times.
You are right to say that the outermost 0& is redundant, since I can produce
the same effect with
shave=: #@:$ 0&(|:}:) ]
However the essentials of the implementation remain the same - I rotate the
array through each and every axis and apply curtail }: at each step.
Really I meant to ask whether there might not be a better way to carry out
this operation - i.e. to apply curtail }: through every dimension of an
argument. Rotating the array through its axes in this way must be an expensive
process (isn't it?).
Cheers
Alistair
Raul Miller rauldmiller at gmail.com
Thu Oct 4 20:35:35 HKT 2007
On 10/4/07, Alistair Tucker <alistairtucker at yahoo.co.uk> wrote:
> Seems clumsy and probably inefficient ... was wondering if anybody
> could think of a better way?
A better way for what? Is your
shave=: #@:$ 0&(0&|:@:}:@:])
meant to be used as a monad? a dyad? Is it used for all ranks
of arrays? Or only certain ranks (if a dyad, for either left or
right arguments)?
That said, note that the outer most 0& can be removed, as that
0 is being provided as a left argument to ] -- and with this removal
the parenthesis become redundant.
alt1=: #@:$ 0&|:@:}:@:]
Also, since this is a hook, once this has been rephrased you
no no longer nened the @:] and because }: as a monad has
infinite rank you can further rephrase this as
alt2=: #@:$ 0&|:@}:
Ultimately, your result is always going to be a relatively small
non-negative integer (produced by monadic #) so it seems likely
that an alternative expression could be formed for reasonably
constrained domains. However, if you must support both monad
and dyad forms for arguments of arbitrary rank, I'd probably
stick with alt2.
.. but I'd be tremendously curious as to the purpose of this
expression if the monad and the dyad were both important
for arbitrarily ranked arrays.
--
Raul
___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try it
now.
http://uk.answers.yahoo.com/
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm