Compare two lists
Alex Tweedly
alex at tweedly.net
Mon Sep 2 06:53:27 EDT 2013
John,
How about something like (rough, untested pseudo-code) ....
put 1 into tLast
put 1 into tThis
put the number of lines in pLastWeek into countLast
put the number of lines in pThisWeek into countThis
repeat until the sun goes down (I don't like to do "repeat forever ...")
if tLast > countLast then -- last week's is done
if tThis > countThis then exit repeat -- we're done
-- every thing remaining in this week's report is new
reportNew line tThis of pThisweek
add 1 to tThis
next repeat
end if
if tThis > countThis then -- this week's is done, last week's isn't
reportRemoved line tLast of pLastWeek
add 1 to tLast
next repeat
end if
if line tLast of pLastWeek = line tThis of pThisweek then next repeat
if item 1 to 2 of line tLast of pLastWeek = item 1 to 2 of line
tThis of pThisweek then
reportChanged line tLast of pLastWeek, line tThis of pThisweek
add 1 to tThis
add 1 to tLast
next repeat
end if
if lineOffset( (CR & item 1 to 2 of line tLast of pLastWeek, line
tThis to -1 of pThisWeek) > 0 then
-- last week's line occurs later in this week's report
reportNew line tThis of pThisweek
add 1 to tThis
next repeat
end if
-- last week's line doesn't appear - so it has been removed
reportRemoved line tLast of pLastWeek
add 1 to tLast
end repeat
good luck ...
-- Alex.
On 02/09/2013 11:36, John Allijn wrote:
> An automated system sends me weekly reports with the following structure:
> Country,city,device_type,numer_of_devices
> I'm working on an app that evaluates these reports and there is one thing I can't get done.
> I'd like to compare this weeks report with that of last week and report changes.
> Output could be something like this:
> - UK-London - mobile - added 2 devices
> - UAE - Dubai - new location - server - added 1
> - FR - Paris - location removed - no more devices
> - FR - Marseille - Location Added - mobile - 1 device added
> - BE - brussels - no change
>
>
> In my script I open both reports, copy the contents to two fields and with a loop I compare line by line of the two fields.
> This works well as long as only the numbers change. When locations, cities or countries are added or deleted, the number of lines of both fields don't match anymore and my script doesnt work anymore.
>
>
> There is potentially an unlimited number of countries, each with an unlimited number of cities that can be added or removed. I tried skipping a line and checking if that one matches with the next one in the other list, but obviously that didnt work. :(
>
>
> Does anyone have an idea on how to approach this problem?
>
>
>
> Thanks for any insights!!!
> —
> Sent from Mailbox for iPhone
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list