ts 'i.~ lb ?. 1 + 10000 $ 10'
0.57129244079904007 528064
ts 'i.~ ListBlocK ?. 1 + 10000 $ 10'
0.71161195068088268 340160
The performance is comparable. Which is a testament
to how well J can deal with wordy code. Your version
is very neat, and given that the adverb form is all
that is needed for the same power as the full
conjunction form (u Listblock v is equivalent to v/ u
lb). So I guess your version is better, but I can't
guess why it takes up so much more memory.
a =: ?. 1 + 50000 $ 50
ts 'i.~ ListBlocK a'
43.049772806320355 658944
ts 'i.~ lb a'
33.016631443381769 1313920
--- Jose Mario Quintana
<[EMAIL PROTECTED]> wrote:
> > On Behalf Of Pascal Jasmin
> > Sent: Tuesday, September 26, 2006 4:18 PM
> > A few applications,
> >
> > raw list of subsequent duplicates
> > ((-.@:i.)) ListBlock (,<) 1 3 2 4 3 1 1 2
> >
>
+-------------+-----------+---------+-------+-----+---+-+
> > |0 0 0 0 1 1 0|0 0 1 0 0 0|0 0 0 0 1|0 0 0 0|0 0
> 0|1
> > 0|0|
> >
>
+-------------+-----------+---------+-------+-----+---+-+
> >
> > Count of subsequent duplicates (boxed then
> unboxed)
> > > ((+/@:-.@:i.)) ListBlock (,<) 1 3 2 4 3 1 1 2
> > 2 1 1 0 0 1 0
> >
> > Link to next duplicate item.
> > ((i.~)) ListBlocK 1 3 2 4 3 1 1 2
> > 4 2 4 4 3 0 1
>
> I tried to compare the performance of a
> straightforward,
>
> lb=. ({.`) (`}.) (`:6) \. (}:@:)
>
> U lb
> }:@:(({. U }.)\.)
>
> (i.~) lb 1 3 2 4 3 1 1 2
> 4 2 4 4 3 0 1
>
> vs. ListBlocK; but I got,
>
> ((i.~)) ListBlocK 1 3 2 4 3 1 1 2
> |value error: xxs
> | 1<#y['h y'=. xxs y
>
>
>
> >
> > --- Pascal Jasmin <[EMAIL PROTECTED]> wrote:
> >
> > > This control structure is a variation on the /
> > > adverb.
> > > There is both an adverb form, and more general
> > > conjunction form. The adverb u ListBlocK 1 2 3
> 4 is
> > > equivalent to:
> > > (1 u 2 3 4) , (2 u 3 4) , (3 u 4)
> > >
> > > The more general conjunction form (u ListBlock
> v) 1
> > > 2
> > > 3 4 is equivalent to:
> > > (1 u 2 3 4) v (2 u 3 4) v (3 u 4)
> > >
> > > and also equivalent to
> > > v/ (u ListBlocK) 1 2 3 4
> > >
> > > The control structure is more equivalent to
> > > lisp/haskell style which use explicit functions
> that
> > > have the entirety of the tail available as a
> > > parameter
> > > to combine with successive head items. The most
> > > practical operation is relationship testing
> between
> > > members and the rest of the list, in n*n/2 time
> > > instead of n*n.
> > >
> > > ListBlock=: 2 : 0
> > > NB. Loops through list passing head u rest to
> dyad
> > > u.
> > > NB. results accumulated to lastreturns v
> newresult
> > > NB. Purpose: like / but passes full rest of
> list on
> > > right.
> > > try. last=. (v/ i.0) catch. last=. i.0 end.
> NB.
> > > v
> > > must have an identity function defined, or
> otherwise
> > > deal with i.0 v (h u y).
> > > while. 1<#y [ 'h y' =. xxs y do.
> > > last=. last v h u y
> > > end.
> > > last=. last v h u y
> > > )
> > > ListBlocK=: (ListBlock ,)
> > >
> > > f=: 4 : 'x + +/ y'
> > > (f ListBlocK) 1 2 3 4
> > > 10 9 7
> > > (f ListBlock +) 1 2 3 4
> > > 26
> > >
> > > Maybe InsertWhole would be a better name for it?
> > >
> > >
> __________________________________________________
> > > Do You Yahoo!?
> > > Tired of spam? Yahoo! Mail has the best spam
> > > protection around
> > > http://mail.yahoo.com
> > >
> >
>
----------------------------------------------------------------------
> > > For information about J forums see
> > > http://www.jsoftware.com/forums.htm
> > >
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam? Yahoo! Mail has the best spam
> protection around
> > http://mail.yahoo.com
> >
>
----------------------------------------------------------------------
> > For information about J forums see
> http://www.jsoftware.com/forums.htm
>
>
>
----------------------------------------------------------------------
> For information about J forums see
> http://www.jsoftware.com/forums.htm
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm