Well, let me give you my final version then: levdist=: 4 : 0"1 'a b'=. (/: #&>)x;y z=. >: iz =. i.#b for_j. a do. z=. <./\&.(-&iz) (>: <. (j ~: b) + |.!.j_index) z end. {:z )
No way is this ever going to be a J primitive. And J does not allow overloading primitive names with user code. You'll have to give it a name and use it. I've not heard of Tanimoto distance, but we can work on that next. Henry Rich Jan Jacobs wrote: > Henry, > very good. For longer strings it is more than double so fast as the previous > version. In my test cases it even consumes less memory. > Is it possible to include this as a native function in J (e.g. overloading > -. or s:)? > Same question but now for Tanimoto distance? > Jan. > > > On 12/19/09, R.E. Boss <r.e.b...@planet.nl> wrote: >> Smart analysis. Chapeau! >> >> >> R.E. Boss >> >> >> -----Oorspronkelijk bericht----- >> Van: programming-boun...@jsoftware.com >> [mailto:programming-boun...@jsoftware.com] Namens Henry Rich >> Verzonden: zaterdag 19 december 2009 3:00 >> Aan: Programming forum >> Onderwerp: [Jprogramming] Levenshtein distance >> >> I was working with R. E.'s compact implementation of the Levenshtein >> distance and I found an interesting equivalence: >> >> (<. >:)/\.&.|. >> >> can be replaced by >> >> (<./\@:- + ]) i...@# >> >> which uses a little more space but is quite a bit faster for large >> operands. So now I have the version: >> >> NB. Levenshtein distance between two strings >> levdist=: 4 : 0 >> 'a b'=. (/: #&>)x;y >> z=. i.>:#b >> for_j. a do. >> z=. ((<./\@:- + ]) i...@#) ((j ~: b) + }:z) ({...@] , (<. }.)) >:z >> end. >> {:z >> ) >> >> >> Henry Rich >> ---------------------------------------------------------------------- >> 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