Thanks!

R.E. Boss



> -----Oorspronkelijk bericht-----
> Van: Programming <[email protected]>
> Namens Louis de Forcrand
> Verzonden: zondag 17 februari 2019 13:52
> Aan: [email protected]
> Onderwerp: Re: [Jprogramming] nubsieve modulo rotation
> 
> f=: |.~ 3 : 0
> ... (explicit code here)
> 
> is simply a hook which acts the same as
> 
> g= |.~ t
> t=: 3 : 0
> ...
> 
> I was also very surprised to see this could be done the first time I ran into 
> it!
> 
> Cheers,
> Louis
> 
> > On 17 Feb 2019, at 13:03, R.E. Boss <[email protected]> wrote:
> >
> > I am embarrassed to admit I don't understand the construction (|.~ 3 : 0)  .
> > Even worse, I cannot find where it is documented.
> > Please enlighten me.
> >
> >
> > R.E. Boss
> >
> >
> >> -----Oorspronkelijk bericht-----
> >> Van: Programming <[email protected]>
> >> Namens [email protected]
> >> Verzonden: zaterdag 16 februari 2019 18:53
> >> Aan: [email protected]
> >> Onderwerp: Re: [Jprogramming] nubsieve modulo rotation
> >>
> >> I rewrote two explicit and perhaps clearer versions of my sig verb.
> >> Both work on the same principle as the original, but one uses a bit
> >> vector and the other uses a list of indices, and the indices are a bit 
> >> faster
> (pun probably intended).
> >> I prefer the bit vector aesthetically though.
> >>
> >> Both basically store the set of indices where possible
> >> lexicographically minimal rotations could start (b and i in the
> >> verbs). On iteration n, the starting index of rotations whose nth
> >> element is not minimal among the nth elements of all possibly minimal
> >> rotations are removed from the aforementioned set. The iteration
> >> continues until only one possible rotation is left, and for a maximum
> >> of #y times, in which case all elements of y are identical and so any
> rotation will do.
> >>
> >> If I am not mistaken (I might be, have to hurry and go now), since
> >> there are a maximum of #y iterations and each includes at most #y
> >> comparisons (= <./), the number of comparisons is at worst quadratic
> >> in the length of y. This happens when 1=#~.y, but most of the time this
> number is much smaller.
> >>
> >> sigb=: (|.~ 3 : 0)"1
> >> b=. 1"0 y
> >> for. y do.
> >>  if. 1 = +/b do. break. end.
> >>  b=. (= <./)&.(b&#) y
> >>  y=. 1|.y
> >> end.
> >> b i. 1
> >> )
> >>
> >> sigi=: (|.~ 3 : 0)"1
> >> i=. i.#y
> >> for. y do.
> >>  if. 1 = #i do. break. end.
> >>  i=. i ((= <./)@:{ # [) y
> >>  y=. 1|.y
> >> end.
> >> i
> >> )
> >>
> >> Cheers,
> >> Louis
> >> ---------------------------------------------------------------------
> >> - 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