How to use an array to solve the following...

dunbarx at aol.com dunbarx at aol.com
Sun Feb 19 23:11:50 EST 2012


I am an old HyperCarder, so I tend to attack things in an old fashioned way. I use arrays, but think that the decisions needed here may not use them to any great advantage. I am usually wrong.


I tried this with a worst case list of 20,000 lines, that is, no adjacent lines in your sense, to maximize the length of the derived list. It works fine, but took three minutes to run. The resulting list was 60,000 lines long. Given a field "yourField" with lots of data in it, a field for the results, and a button, place this in the button script:



on mouseup
   put fld 1 into temp
   repeat for each line tLine in temp
      put item 1 of tLine - 10 & "," & 0 & return before tLine
      put return & item 1 of line 2 of tLine + 10 & "," & 0 & return after tLine
      put tLine after accum
   end repeat
   sort accum numeric by item 1 of each
   delete line 1 of accum
   delete the last line of accum
   repeat with y = the number of lines of accum down to 1
      switch  
         case item 1 of line y of accum = item 1 of line (y-1) of accum and item 2 of line y of accum = 0
            delete line y of accum
            break
         case item 1 of line y of accum = item 1 of line (y-1) of accum and item 2 of line y-1 of accum = 0
            delete line y-1 of accum
            break
      end switch         
   end repeat
   put accum into fld 2
end mouseup


Someone will find a better algorithm.


Craig Newman



More information about the use-livecode mailing list