Fwd: Re: Finding non-common elements in two arrays
Bruce A. Pokras
macstacks at earthlink.net
Tue Nov 8 09:10:34 EST 2005
>
>Subject: Re: Finding non-common elements in two arrays
>
>Bruce A. Pokras wrote:
>
>>The intersect function will return the common elements of two
>>arrays. Is there any array methodology that will return the
>>non-common elements of two arrays? I download a government list
>>each month, and I would like an easy way to spot the records that
>>are either new or changed. Currently, I use a repeat structure to
>>go through the old list line-by-line to see if any lines are not
>>identically found in the new list (using offset), and collect a
>>third list of any lines in which offset=0. After splitting the old
>>and new lists into arrays, an "inverse-intersect" function or
>>equivalent would seem to be a more elegant way of doing this.
>>
>>Any ideas?
>
Thanks for everyone's the suggestions. I put Alex Tweedly's array
script (see below) to the test against a line-by-line "offset" script
("repeat for each line n in list1" etc.). The lists were text files
representing two consectutive months of a 20,000 line government
database with 11 fields per line. The idea is to see which records in
the new list have been added to or changed from the previous list.
There was simply no comparison between the methods. It took all of
18-19 seconds to make the comparison using Alex's method (I ran it
twice to make sure I wasn't imagining it). Using the line-by-line
offset method, it took 14 minutes! A comparison in MS Word of the
results of each method showed them to be identical.
I never would have believed that the first steps of going through
each list and creating complete copies of them with the tab & 1 or 2
could occur so quickly. The incredible speed of those two steps
(creating two new 20,000 line lists) is really what makes this thing
work.
I will next check out Wouter's more sophisticated version, since I
may have a use for the additional functionality of that one, also.
Thanks very much Alex and Wouter, and thanks to everyone else who
repsonded to my question.
Regards,
Bruce Pokras
Blazing Dawn Software
www.blazingdawn.com
>
>>on mouseUp
>>
>> put fld "F1" into t1
>> repeat for each line L in t1
>> put L & TAB & "1" & cr after tA1
>> end repeat
>> split tA1 by CR and TAB
>>
>> put fld "F2" into t1
>> repeat for each line L in t1
>> put L & TAB & "2" & cr after tA2
>> end repeat
>> split tA2 by CR and TAB
>>
>> union tA1 with tA2
>> combine tA1 with CR and TAB
>> filter tA1 with ("*"&TAB&"2")
>> put tA1 into fld F3
>>
>>end mouseUp
>>
>
>
More information about the use-livecode
mailing list