And... here, I solved the wrong problem.
I should have used something like:
common=: 2 2 <@({.@;@{. ([ ~.@, ;@:}:@] , (,&.> ;@{:)) }.&.>)@,;.3^:_
((;~@#)&.> i.@$)@(=/)
lcs=: [ {~ 0 {"1 ,&$ #: 0 >@{.@(#~ (= >./)@:(#@>))@({:: ,) common
'thisisatest' lcs 'testing123testing'
tsitest
--
Raul
On Thu, Jan 31, 2013 at 4:41 PM, Raul Miller <[email protected]> wrote:
> Thanks, this is great.
>
> Based on this, added another J implementation of the longest common
> subsequence task from rosettacode:
> http://rosettacode.org/wiki/Longest_Common_Subsequence#J
>
> It's this code:
>
> accumulate=: [ >. [ + *
> rateSequence=: <@(accumulate/\.)
> rateSeqs=: $ $ rateSequence/. /:&; </.@i.@$
> commonLengths=: rateSeqs&.|.@(=/)
> maxLen=: >./@,
> longest=: = maxLen
> longLoc=: (-@maxLen ; 1 + {.@I.@:(+./)@longest)@commonLengths
> lcs=: [: > [: {.&.>/ longLoc , <@]
>
> 'thisisatest' lcs 'testing123testing'
> test
>
> I can easily imagine that this code could be further simplified. If
> anyone sees any good simplifications, feel free to update rosettacode
> and/or post the details here.
>
> Thanks,
>
> --
> Raul
>
>
> On Thu, Jan 31, 2013 at 1:48 PM, Roger Hui <[email protected]> wrote:
>> t -: (2{.s) $ x /:&; </.i.s
>> 1
>>
>>
>>
>> On Thu, Jan 31, 2013 at 10:47 AM, Roger Hui <[email protected]>wrote:
>>
>>> t=: 5 7 2 ?@$ 1e6
>>> s=: $t
>>> x=: </.t
>>>
>>> t -: (2{.s) $ (;x)/:;</.i.s
>>> 1
>>>
>>>
>>>
>>> On Thu, Jan 31, 2013 at 10:28 AM, Raul Miller <[email protected]>wrote:
>>>
>>>> Let's start with an arbitrary array:
>>>>
>>>> A=: i. 2 3
>>>>
>>>> We can box oblique lines from this array:
>>>>
>>>> </. A
>>>> +-+---+---+-+
>>>> |0|1 3|2 4|5|
>>>> +-+---+---+-+
>>>>
>>>> However, the interpreter does not currently provide us with an inverse
>>>> for this operation:
>>>>
>>>> </.inv </. A
>>>> |domain error
>>>>
>>>> One problem is that you cannot uniquely determine the first two
>>>> elements of the shape of the original array by inspecting </.'s
>>>> result:
>>>>
>>>> (</. 5 7$0) -: </.7 5$0
>>>> 1
>>>>
>>>> If its shape is provided, how might we reconstruct the original array?
>>>>
>>>> [For the sake of simple code, it's ok to focus on numeric, rank 2 arrays.]
>>>>
>>>> --
>>>> Raul
>>>> ----------------------------------------------------------------------
>>>> 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