Lovely...  note that |:@(=/)  is the same as   (=/~)

Henry Rich

On 8/19/2011 12:34 PM, R.E. Boss wrote:
> OK, convinced,  Shaws solution doesn't handle equal neighbors well.
> But this design flaw is easily repaired (without loss of elegance or
> performance):
>
>     findinRows_SB=: +./@((*. 1 |.!.0 +./\.)/@|:@(=/))
>
>     A=:'CTGGTTGAT','GTAGTCATA','CATGTCTAA','TCGAAAGTT',:'CCGGAGAAG'
>
>    A findinRows_SB 'TAA'
> 0 1 1 1 0
>    A findinRows_SB 'TAAG'
> 0 0 0 1 0
>
>     findinRows_ML=: [: *@#@>  [: ([ #~ (<  {:))&.>/<@I.@(=/~)
>
>    A findinRows_ML 'TAA'
> 0 1 1 1 0
>    A findinRows_ML 'TAAG'
> 0 0 0 1 0
>
>
> R.E. Boss
>
>
>> -----Oorspronkelijk bericht-----
>> Van: [email protected] [mailto:programming-
>> [email protected]] Namens Viktor Cerovski
>> Verzonden: vrijdag 19 augustus 2011 15:20
>> Aan: [email protected]
>> Onderwerp: Re: [Jprogramming] Search for ordered letters within lines of
>> matrix
>>
>>
>>
>> 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
>
> ----------------------------------------------------------------------
> 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