Intersecting data question/challenge

Alex Tweedly alex at tweedly.net
Fri Jul 8 16:33:02 EDT 2005


Dennis Brown wrote:

> Hello clever Rev programmers,
>
> I have a simple question or maybe it is a simple challenge.
>
> I have two lists of integers.  The list are not long, perhaps 5 to 50  
> items e.g.:
> list1="310,423,522,211,107,340,"
> lis2="311,312,313,318,320,323,325,330,333,337,340,"
>
Are the items in each list known to be unique or not ?
i.e. could I have   list1 = "310,423,310" ?

> I want to find if any of the items in list1 have a match in list2.
> I know I could do it with a repeat, something like this:
>
> get false
> repeat for each item theItem in list1
>   if theItem is not among the items of list2 then next repeat
>   get true
>   exit repeat
> end repeat
>
> I was wondering if it could be done faster without a repeat through  
> some Rev trick.
>
For data samples that small, I doubt if there will be anything faster.

For data large enough to overcome the cost of some set-up time (say 
upwards of 20,000 items in each set), you might get faster with either 
an array/intersect based scheme, or simply by sorting and stepwise 
comparing each one. The array method is especially appealing if there 
can be repeated entries.

For *large* data sets, you might  be best with binary-search comparing 
of sorted lists - especially if you can arrange things such that the 
lists are sorted ahead of time.

And for 5 to 50 items - who cares : the simple solution doesn't take 
long enough to warrant any time spent optimizing it :-)

-- 
Alex Tweedly       http://www.tweedly.net



-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.10/43 - Release Date: 06/07/2005




More information about the use-livecode mailing list