This has the gist of Millers solution.
R.E. Boss > -----Oorspronkelijk bericht----- > Van: [email protected] [mailto:programming- > [email protected]] Namens Marshall Lochbaum > Verzonden: donderdag 18 augustus 2011 19:19 > Aan: Programming forum > Onderwerp: Re: [Jprogramming] Search for ordered letters within lines of > matrix > > Also, this is a nice version based on your original strategy. > > findinrows =. [: *@#@> [: ([#~(<{:))&.>/ [: <@I. =/~ > A findinrows 'TAG' > 0 1 0 1 0 > > Marshall > > On Thu, Aug 18, 2011 at 1:05 PM, Marshall Lochbaum > <[email protected]>wrote: > > > Here is a version that's morally equivalent to R.E. Boss's, but a bit > > cleaner and more efficient. Note that it only works if the string you > > are finding has all unique characters. > > > > findinrows =. 0 = (,{~1~:-~)/@(#@[,~i.)"1 > > 'TAG' findinrows A > > 0 1 0 1 0 > > > > Marshall > > > > On Thu, Aug 18, 2011 at 10:51 AM, R.E. Boss <[email protected]> wrote: > > > >> > >> 'TAG' (i.@>:@#@[ (-:~.)"1 [:(]`[@.(1=-~))/\."(1) #@[ ,.~ i."1) A > >> 0 1 0 1 0 > >> > >> > >> R.E. Boss > >> > >> > >> > -----Oorspronkelijk bericht----- > >> > Van: [email protected] [mailto:programming- > >> > [email protected]] Namens Ric Sherlock > >> > Verzonden: donderdag 18 augustus 2011 15:25 > >> > Aan: Programming forum > >> > Onderwerp: [Jprogramming] Search for ordered letters within lines > >> > of > >> matrix > >> > > >> > I saw the following thread on comp.lang.apl > >> > > http://groups.google.com/group/comp.lang.apl/browse_thread/thread/8 > >> > 9c > >> > 585c9d1a7bd3a# > >> > and was trying to put together a (non-regex) J solution. > >> > > >> > Given the matrix: > >> > ]A=: > >> > 'CTGGTTGAT','GTAGTCATA','CATGTCTAA','TCGAAAGTT',:'CCGGAGAAG' > >> > CTGGTTGAT > >> > GTAGTCATA > >> > CATGTCTAA > >> > TCGAAAGTT > >> > CCGGAGAAG > >> > > >> > and the list 'TAG' > >> > > >> > Identify the rows of the matrix where the letters in the list occur > >> > in > >> the > >> order > >> > they appear in the list, but not necessarily adjacent to each other. > >> > So the result of a verb findinRows would be: > >> > A findinRows 'TAG' > >> > 0 1 0 1 0 > >> > > >> > I have an answer below but am thinking there may be other > >> > approaches I'm missing > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > Spoiler alert!! > >> > > >> > > >> > > >> > > >> > > >> > > >> > findinRows=: [: (1 e. ,@:(</))&>/ 2 (([: ($ #. ]) 4 $. [: $. > >> > </)&.>)/\ > >> > [: <@I."1 ="_ 0 > >> > ------------------------------------------------------------------- > >> > --- 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
