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

Reply via email to