for, ,/^:(2 -~ #@$)^:(3 <: #@$)
u^:(3 <: #@$) is that 0/1 form, and u does not get executed if 0? ,/^:(2 -~ #@$) is ,/^:n (where n could be greater than 1) on timex tests with input (i. 1 2 3 7 4 5 2 3 3 4 5) all of the options are super close. Bob's version (^:_) is probably the fastest for 3 shape counts. On Sunday, May 24, 2020, 12:59:07 p.m. EDT, Henry Rich <[email protected]> wrote: Counting comparisons is SO not the right way to look at J. The interpreter is doing much computation behind the scenes. Here, in the original interpreter, executing u^:v causes v to be executed to create a noun n; then u^:n is reinterpreted as a conjunction to produce a verb; then that verb gets executed. I modified this to avoid the reinterpretation if v produces atomic 0 or 1. Meanwhile, what really makes a difference is whether the result will be a virtual block or, if possible, an in-place (self-virtual) block. This difference will show up if you assign the result. It turns out that, because of some recent rewriting, ,/^:(2 -~ #@$)^:(3 <: #@$) does execute ,/ inplace, and ,/ does produce a self-virtual block, twice, and so this idiom takes not much more space than 2 (((*/@{. , }.) $) ($,) ]) y which is how I would write it. Counting cycles is quite difficult nowadays even when you are looking at the assembler code; impossible from the J code unless you know the internals. Henry Rich On 5/24/2020 10:45 AM, 'Pascal Jasmin' via Programming wrote: > > to only "reduce" if rank 3 or higher, as Bob's version did > > ,/^:(2 -~ #@$)^:(3 <: #@$) i. 4 5 > > the advantage is only one comparison is needed if shape count is under 3, and > exactly 2 comparisons if more than 2. > > > > > > > > > ,/^:(2 -~ #@$) i. 1 2 3 4 5 > > > > > > > On Saturday, May 23, 2020, 11:36:20 p.m. EDT, 'robert therriault' via > Programming <[email protected]> wrote: > > > > > > Hi Bill, > > You could use this > > ,/^:(2< #@$)^:_ > > $ ,/^:(2< #@$)^:_ i. 5 > 5 > $ ,/^:(2< #@$)^:_ i. 4 5 > 4 5 > $ ,/^:(2< #@$)^:_ i. 3 4 5 > 12 5 > $ ,/^:(2< #@$)^:_ i. 2 3 4 5 > 24 5 > $ ,/^:(2< #@$)^:_ i. 7 2 3 4 5 > 168 5 > > although Roger or Pascal may have something more elegant. > > Cheers, bob > >> On May 23, 2020, at 20:09, bill lam <[email protected]> wrote: >> >> Wow so simple! >> Thanks Roger, Pascal. >> >> Just curious, how to do rank-n to rank-2 >> where n>3 >> >> >> On Sun, May 24, 2020, 11:04 AM 'Pascal Jasmin' via Programming < >> [email protected]> wrote: >> >>> ,/ i. 3 4 5 >>> >>> >>> >>> >>> >>> >>> On Saturday, May 23, 2020, 10:56:02 p.m. EDT, bill lam < >>> [email protected]> wrote: >>> >>> >>> >>> >>> >>> I had a problem similar to that of the recent shape question, >>> a=. i. 3 4 5 >>> to reshape to rank-2 array with trailing shape unchanged that is shape 12 >>> 5, >>> This works but difficult to remember >>> (((*/@}: , {: )@: $) $ , ) i. 3 4 5 >>> 0 1 2 3 4 >>> 5 6 7 8 9 >>> 10 11 12 13 14 >>> 15 16 17 18 19 >>> 20 21 22 23 24 >>> 25 26 27 28 29 >>> 30 31 32 33 34 >>> 35 36 37 38 39 >>> 40 41 42 43 44 >>> 45 46 47 48 49 >>> 50 51 52 53 54 >>> 55 56 57 58 59 >>> >>> this can also work and easier to remember but Henry Rich said recently >>> that ]\ doesn't support virtual block yet. >>> _5 ]\ ,i. 3 4 5 >>> 0 1 2 3 4 >>> 5 6 7 8 9 >>> 10 11 12 13 14 >>> 15 16 17 18 19 >>> 20 21 22 23 24 >>> 25 26 27 28 29 >>> 30 31 32 33 34 >>> 35 36 37 38 39 >>> 40 41 42 43 44 >>> 45 46 47 48 49 >>> 50 51 52 53 54 >>> 55 56 57 58 59 >>> >>> Any suggestions of other ways to do it? >>> ---------------------------------------------------------------------- >>> 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 -- This email has been checked for viruses by AVG. https://www.avg.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
