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
<programm...@jsoftware.com> 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 <bbill....@gmail.com> 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 <
programm...@jsoftware.com> wrote:
,/ i. 3 4 5
On Saturday, May 23, 2020, 10:56:02 p.m. EDT, bill lam <
bbill....@gmail.com> 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