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