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