R.E.  Boss wrote:
> 
> Shaws solution is superior in every respect, more elegant, faster  and
> leaner.
> 
>    A=:'CTGGTTGAT','GTAGTCATA','CATGTCTAA','TCGAAAGTT',:'CCGGAGAAG'
>    B=:'TAGT'
> 
>    ts' AA findinRows_ML BB'[AA=: 500 $,:A [BB=:500$B
> 1.7589716 4.0105395e8
> 
>    ts' AA findinRows_SH BB'
> 0.13684443 33720960
> 
>    1.7589716 4.0105395e8 % 0.13684443 33720960
> 12.853805 11.893314
> 
>    AA (findinRows_ML (-: |:) findinRows_SH) BB
> 1
> 
> 
> R.E. Boss
> 
> 
>> -----Oorspronkelijk bericht-----
>> Van: [email protected] [mailto:programming-
>> [email protected]] Namens Viktor Cerovski
>> Verzonden: vrijdag 19 augustus 2011 14:24
>> Aan: [email protected]
>> Onderwerp: Re: [Jprogramming] Search for ordered letters within lines of
>> matrix
>> 
>> 
>> 
>> Ric Sherlock wrote:
>> >
>> > Update!
>> > Ewart Shaw sent me this version which looks to be nicer in all
>> respects.
>> >
>> > findinRows=: +./@((*. +./\.)/@|:@(=/))
>> >
>> > On Fri, Aug 19, 2011 at 9:28 AM, Ric Sherlock <[email protected]>
>> wrote:
>> >> Thanks to everyone for the interesting approaches. I enjoyed
>> >> dissecting the different thinking processes.
>> >>
>> >> As Marshall points out, not all the solutions will work on lists that
>> >> contain non-unique characters which I think is a desirable
>> >> characteristic. His development of Raul's approach seems to have the
>> >> best combination of generality, performance and simplicity.
>> >>
>> >> findinRows=: [: *@#@> [: ([ #~ (< {:))&.>/ <@I.@(=/~)
>> >>
>> > [...]
>> >
>> Shaw's solution is really nice.  Let's not forget though that Marshall's
> is more
>> general.
>> 
>> Straightforward simplification of the later is to replace
>> 
>> ([ #~ (< {:))
>> 
>> by
>> 
>> ((< {:) # [)
>> 
> [...]
> 

Well, I still think the same, here are examples:

   findinrowsM=: [: *@#@> [: ((< {:) # [)&.>/ <@I.@(=/~)
   findinrowS =: +./@((*. +./\.)/@|:@(=/))

   ]A=:'CTGGTTGAT','GTAGTCATA','CATGTCTAA','TCGAAAGTT',:'CCGGAGAAG'
CTGGTTGAT
GTAGTCATA
CATGTCTAA
TCGAAAGTT
CCGGAGAAG

   A findinrowsM 'TAG'
0 1 0 1 0                    NB. correct
   A findinrowS 'TAG'
0 1 0 1 0                    NB. correct

   A findinrowsM 'TAA'
0 1 1 1 0                    NB. correct
   A findinrowS 'TAA'
1 1 1 1 0                    NB. incorrect

   A findinrowsM 'TAAG'
0 0 0 1 0                    NB. correct
   A findinrowS 'TAAG'
0 1 0 1 0                    NB. incorrect


-- 
View this message in context: 
http://old.nabble.com/Search-for-ordered-letters-within-lines-of-matrix-tp32287342s24193p32295181.html
Sent from the J Programming mailing list archive at Nabble.com.

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

Reply via email to