Thanks - I'm not too surprised. v2 is still clunky. My earlier offering is even slower and consumes
much more space!

But, FWIW, Skip's original example result had 5 rows, the last being the unaltered input data, which is why I added it - that's the one you then remove with }:@: . I now see that in his second statement
of the problem,  there are only 4 output rows, all changed.

So v2 should be
   ((I.@:(=/&>) =/ i.@#) {&>"1 (~.@; +/^:(=/))&.>)
But I'm afraid there's little improvement in performance!

Well done, Xiao-Yong Jin (in a later post) - that's what I'd been looking for without success, ie a function on the unboxed precursor vector. A quick look suggests his verb's performance is
superior to v0 and v1,  as well as v2 of course!

Mike

On 07/11/2016 23:39, Jose Mario Quintana wrote:
A quick comparison of the tacit versions follows:

v0 - Groeneveld
v1 - Miller
v2 - Day (fixed and slightly modified to produce the right result, as far
as I can see)


    JVERSION

Engine: j805/j64/windows

Beta-12: commercial/2016-09-30T15:50:47

Library: 8.05.06

Qt IDE: 1.5.2/5.6.1

Platform: Win 64

Installer: J805 install

InstallPath: g:/program files/j

Contact: www.jsoftware.com





    N=. 10&#.inv&.>12 22 24 41 15 53 34 44 44 42 23 33



    v0=. ([: I. =/&>) +/&.>@{`[`]}"0 1 ]

    v1=. 2&{@]`(1&({::)@])`(0&({::)@])}"1~@(([ ;"1 (<"0@] ,. {~)&>/@(]
; I.@:~:))
+//.~&.>)

    v2=. }:@:((0 ,~ I.@:(=/&>) =/ i.@#) {&>"1 (~.@; +/^:(=/))&.>)



    stp 666

v0 N

v1 N

v2 N

)

┌────────┬─────┬──────────┬────────────┐

│Sentence│Space│Time      │Space * Time│

├────────┼─────┼──────────┼────────────┤

│v0 N    │5888 │1.1093e_5 │0.0653158   │

├────────┼─────┼──────────┼────────────┤

│v1 N    │7040 │3.74794e_5│0.263855    │

├────────┼─────┼──────────┼────────────┤

│v2 N    │11008│4.15839e_5│0.457756    │

└────────┴─────┴──────────┴────────────┘


Groeneveld's version is neater, leaner and meaner. However, do they
products match?



    (v0 -: v2)N

1



    (v0 -: v1)N

0


The products of v0 and v1 look the same but they are not.  The difference
can be explained by,



    ($each v0 N)

┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐

│2│ │2│2│2│2│2│2│2│2│2│2│

├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│2│2│2│2│2│2│2│ │2│2│2│2│

├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│2│2│2│2│2│2│2│2│ │2│2│2│

├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│2│2│2│2│2│2│2│2│2│2│2│ │

└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

    ($each v1 N)

┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐

│2│1│2│2│2│2│2│2│2│2│2│2│

├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│2│2│2│2│2│2│2│1│2│2│2│2│

├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│2│2│2│2│2│2│2│2│1│2│2│2│

├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤

│2│2│2│2│2│2│2│2│2│2│2│1│

└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

Does the difference matter for this problem?


On Mon, Nov 7, 2016 at 1:00 PM, Skip Cave <[email protected]> wrote:

Wow! Great answers. I didn't think this could be done without control
statements. By now I should know that J's powerful set of primitives can
implement most any algorithm without requiring looping statements.

Mike Day's sharp eye spotted the fact that my data was derived from an
infix sliding-window boxing of an unboxed vector. Mike's step-by-step set
of verb definitions helped greatly in understanding what was going on.

Raul's monster tacit verb is probably the most complex tacit expression I
have ever tried to analyze. His de-construction of the verb helped in my
understanding, but my tacit skills are still a way from being able to
create something like this on my own. Hopefully, my study of this function
will improve my tacit skills.

​Thanks for all your help,

Skip​
----------------------------------------------------------------------
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 Avast antivirus software.
https://www.avast.com/antivirus

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to