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

Reply via email to