ChatGPT examples

Alex Tweedly alex at tweedly.net
Fri Jan 20 16:12:35 EST 2023


Duh. What part of Sod's Law says that you always see a bug the first 
time you look at your own code *after* you've made the code public :-(

The 'sort' command below needs to be a numeric sort ....

sort pLines by item 1 of each   ----->   sort pLines numeric by item 1 
of each

Sorry,

Alex.

On 20/01/2023 13:05, Alex Tweedly via use-livecode wrote:
> Fascinating. Thank you so much for that Geoff.
>
> I've been afraid to play with ChatGPT so far - too worried abut 
> getting sucked in and spending way too much time ....
>
> I did take a look at your third example (since I can never resist a 
> performance challenge :-)
>
> There are a number of minor tweaks that could be made to improve 
> performance
>
> 1. set initial value to infinity rather than calculating a distance 
> between the first two points.
>
> 2. "number of elements in pPoints" is unvarying within any one call - 
> so extract it to a variable at the start
>
> 3. use the square of the distance rather than the actual distance - 
> save N**2 calls to sqrt
>
> 4. use "DX * DX" rather than "DX ^ 2" (about 25% faster)
>
> 5. calculate distance in-line rather than call a function
>
> but those all add up to maybe 10% performance improvement (or less - I 
> didn't test it). That's useful - but not enough.
>
> For a modest number of points (2000 random points), this takes approx 
> 16.5 seconds !!
>
> We need a better algorithm. If we use a "linear scan", we can change 
> it from essentially Order(N**2) to approx Order(N).
>
> Summary:
>
>  - sort the points by X coordinate
>
>  - while scanning the inner loop, as soon as the difference in Xcoord 
> from the 'outer' point exceeds the minDist so far, you can reject not 
> just this point, but all subsequent points, and hence exit the inner 
> loop immediately.
>
> This brings the time down from 16500 millisecs to 25 millisecs.
>
> BUT - I have no clue how I'd go about describing this to ChatGPT :-)
>
> NB I changed the input parameter to be the list of points rather than 
> the array.
>
> Code:
>
> function closestPointsSQ pLines
>    sort pLines by item 1 of each
>    put pLines into pPoints
>    split pPoints by CR
>    put infinity into minDist
>    put the number of elements in pPoints into N
>    repeat with i = 1 to N-1
>       repeat with j = i + 1 to N
>          put item 1 of pPoints[j] - item 1 of pPoints[i] into t1
>          if t1 * t1 > minDist then exit repeat
>          put item 2 of pPoints[j] - item 2 of pPoints[i] into t2
>          put t1 * t1 + t2 * t2 into dist
>          if dist < minDist then
>             put dist into minDist
>             put pPoints[i] & " " & pPoints[j] into closestPoints
>          else if dist = minDist then
>             put return & pPoints[i] & " " & pPoints[j] after 
> closestPoints
>          end if
>       end repeat
>    end repeat
>    return closestPoints
> end closestPointsSQ
>
> -- Alex.
>
> On 20/01/2023 06:02, Geoff Canyon via use-livecode wrote:
>> I tested three use cases, with variations, using ChatGPT for (live)code
>> generation. There was a lot of back and forth. In the end, I solved 
>> all the
>> problems I set, but in some cases I had to hold ChatGPT's hand pretty
>> tightly.
>>
>> That said, I learned some things as well -- about LiveCode. ChatGPT's 
>> code
>> for Fizz Buzz was faster than mine.
>>
>> My code was faster for reversing lines. But ChatGPT, when asked to "make
>> the code faster" gave several suggestions, some of which were wrong or
>> impossible, but one of them was my method, and when I said "write that
>> option" it did, with only a few corrections needed.
>>
>> And one of the ideas, while wrong, caused me to think of a different 
>> way to
>> solve the problem, and that way ended up being faster than my original
>> solution by over 3x on reversing 10k lines. Getting ChatGPT to write 
>> this
>> new method was *hard*.
>>
>> In any case, I wrote it all down in a google doc
>> <https://docs.google.com/document/d/1W3j5WaFhYZaqSt0ceRQj8j160945gSwG_nyZsCBP6v4/edit?usp=sharing>. 
>>
>> If you're curious, have a read. That URL is open for comments/edit
>> suggestions. If you have any I'd love to hear them.
>>
>> Thanks!
>>
>> Geoff
>> _______________________________________________
>> 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
>
> _______________________________________________
> 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