> In my tests, on longer sequences, Henry Rich's approach seemed about
> the same speed as mine.

  an2 1 _1 2

|length error: an1

| an2 1 _1 2

Maybe the specs assume an even number of items?

On Sun, Dec 8, 2019 at 12:04 AM Raul Miller <[email protected]> wrote:
>
> In my tests, on longer sequences, Henry Rich's approach seemed about
> the same speed as mine.
>
> Thanks,
>
> --
> Raul
>
> On Sat, Dec 7, 2019 at 6:33 AM R.E. Boss <[email protected]> wrote:
>
> > Forcrand's solution is more or less the version I came up with,
> > unfortunately, it's far from linear (what is not compensated by its
> > elegance).
> >    foo=: ,`(}.@])@.(0=(+{.))/
> >       ts'foo 1 _1 2 _2{~10000?.@#4'
> > 0.0166915 854720
> >       ts'foo 1 _1 2 _2{~100000?.@#4'
> > 1.9109807 6818496
> >
> > Miller's solution is better in that respect (and much faster)
> >       ts'an2 1 _1 2 _2{~10000?.@#4'
> > 0.0024111 722816
> >       ts'an2 1 _1 2 _2{~100000?.@#4'
> > 0.0281419 6293376
> >
> > ddup from Rich also seems to be linear but is a factor 10 slower than
an2
> >       ts'ddup 1 _1 2 _2{~10000?.@#4'
> > 0.0219618 395264
> >       ts'ddup 1 _1 2 _2{~100000?.@#4'
> > 0.2124874 3147776
> >
> > Jasmin's solution is far too slow
> >    ts'(delitemG~ 2, 0 i.~ 2&(+/\))(^:_) 1 _1 2 _2{~10000?.@#4'
> > 1.2363434 1585408
> >
> > Thanks for all the contributions
> >
> >
> > R.E. Boss
> >
> >
> > > -----Oorspronkelijk bericht-----
> > > Van: Programming <[email protected]>
> > > Namens Louis de Forcrand
> > > Verzonden: zaterdag 7 december 2019 00:26
> > > Aan: [email protected]
> > > Onderwerp: Re: [Jprogramming] Removing annihilating pairs
> > >
> > > Not particularly J-ish, but (array-shuffling aside) linear solution:
> > >
> > >    s=: ,`(1}.])@.(= -@{.)/
> > >    s 1 _1 2 _2{~100?.@#4
> > > 2 1 2 1 _2 _1 2 1 1 2 2 2 _1 2 _1 2 1 2 2 2 1 1 _2 _1 2 1 _2 _1 _2 _2
_2
> > _2 _1 _2 _1
> > > _1 _2 _2 1 1 1 2 1 _2 1 _2 _1 _1 _1 2
> > >
> > > Since the reduced form of the input list is unique, we are free to
> > perform
> > > reductions in any order we please; in particular, we can start
> > simplifying from
> > > the back, which is what s does.
> > > Might do strange stuff on an empty input list.
> > >
> > > Cheers,
> > > Louis
> > >
> > > ----Original Message----
> > > From : [email protected]
> > > Date : 06/12/2019 - 23:51 (CEST)
> > > To : [email protected]
> > > Subject : Re: [Jprogramming] Removing annihilating pairs
> > >
> > > If the answer to Jimmy's question is no, then the uniqueness of the
> > resulting
> > > array has to do (surprisingly) with free groups
> > > (https://en.wikipedia.org/wiki/Free_group).
> > > Indeed we can view a vector of numbers as a word over the alphabet
[0,∞)
> > > of positive real numbers (where negative numbers / zero are inverses
of
> > > letters in our alphabet). The fact that all maximal reductions
> > (reductions
> > > which contain no adjacent inverses) of a given word are equal means
> > exactly
> > > that our reduced list is unique.
> > > For a proof see:
> > > https://math.stackexchange.com/a/2425147
> > >
> > > I'll look into this problem, it's interesting!
> > > Cheers,
> > > Louis
> > >
> > > ----Original Message----
> > > From : [email protected]
> > > Date : 06/12/2019 - 23:36 (CEST)
> > > To : [email protected]
> > > Subject : Re: [Jprogramming] Removing annihilating pairs
> > >
> > > Hi,
> > >
> > > is the expected output of transforming 1 3 _3 3 5 to be 1 3 5 or 1 5 ?
> > >
> > > On Fri, Dec 6, 2019 at 7:15 AM R.E. Boss <[email protected]> wrote:
> > >
> > > > Given an array with zero or more annihilating pairs, i.e., two
> > > > subsequent numbers which add up to zero, the question is to clean up
> > > > the array by deleting all annihilating pairs such that no such pairs
> > are left.
> > > > I do have a solution that is both elegant and efficient (I believe),
> > > > but I am curious about other thoughts.
> > > >
> > > >    foo  2 1 1 _1 2 _2 _1
> > > > 2
> > > >
> > > >    foo 1 _1 2 _2{~100?.@#4              NB. Notice (?.)
> > > > 2 1 2 1 _2 _1 2 1 1 2 2 2 _1 2 _1 2 1 2 2 2 1 1 _2 _1 2 1 _2 _1 _2
_2
> > > > _2
> > > > _2 _1 _2 _1 _1 _2 _2 1 1 1 2 1 _2 1 _2 _1 _1 _1 2
> > > >
> > > >
> > > > R.E. Boss
> > > >
----------------------------------------------------------------------
> > > > 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
> > ----------------------------------------------------------------------
> > 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