valueDiff for arrays?

Mark Waddingham mark at livecode.com
Sun Aug 5 15:38:17 EDT 2018


On 2018-08-05 21:25, Richard Gaskin via use-livecode wrote:
> Brian Milby wrote:
> 
>> I think Mark's code had a typo (left returned too many keys), but even
>> when corrected it takes half the time as a pure LCS solution.  Here's
>> my modification:
>> 
>> function bwmValueDiff pLeft, pRight
>>    local tResult
>>    intersect pLeft with pRight into tResult["1"]
>>    repeat for each key tKey in tResult["1"]
>>       if pLeft[tKey] is pRight[tKey] then
>>          delete variable tResult["1"][tKey]
>>       end if
>>    end repeat
>>    intersect pRight with tResult["1"] into tResult["2"]
>>    return tResult
>> end bwmValueDiff
> 
> That looks like LCS.  What is the "pure LCS solution" you were 
> comparing it to?

I think Brian means where it does not use intersect - i.e. all loops are 
in LCS.

FWIW - I'm pretty sure this operation can be done using only two loops 
(one over left, and one over right).

Also, I'm pretty sure that a 'pure' LCS solution of that as suggested 
above would actually be faster than the minimum 3 loops needed if you 
use engine array ops - above a certain array size.

However, I haven't had a chance to code it yet.

Warmest Regards,

Mark.

-- 
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps




More information about the use-livecode mailing list