Training the AI to write better LiveCode

Beda b.sellung at posteo.de
Sat Jan 14 06:35:35 EST 2023


It seems to be more inspiring for me than talking to a rubber duck 
sitting on my desk, at least for simple problems.

For harder problems there will be, hopefully for ever, the user forum 
and this newslist.

Beda

Am 14.01.23 um 11:17 schrieb Kaveh via use-livecode:
> Quite incredible!
>
> It might be that LiveCode's simple syntax is best suited to ChatGPT.
>
> On Sat, 14 Jan 2023 at 03:24, Geoff Canyon via use-livecode <
> use-livecode at lists.runrev.com> wrote:
>
>> So just now I put this in to chatgpt:
>>
>> "fizz bin" is a program that counts from 1 to 100, replacing every number
>> divisible by 5 with "fizz" and every number divisible by 7 with "bin"; and
>> numbers divisible by both 5 and 7 with "fizz bin". Write code in the
>> programming language livecode to execute "fizz bin"
>>
>> This is what ChatGPT responded with:
>>
>> repeat with x = 1 to 100
>>      if x mod 5 = 0 and x mod 7 = 0 then
>>          put "fizz bin"
>>      else if x mod 5 = 0 then
>>          put "fizz"
>>      else if x mod 7 = 0 then
>>          put "bin"
>>      else
>>          put x
>>      end if
>> end repeat
>>
>> That works as-is, but obviously the results fly by in the message box. So I
>> put a field and a button on a card, and edited to this, and it works
>> perfectly:
>>
>> on mouseUp
>>     repeat with x = 1 to 100
>>        if x mod 5 = 0 and x mod 7 = 0 then
>>           put "fizz bin" & cr after fld 1
>>        else if x mod 5 = 0 then
>>           put "fizz" & cr after fld 1
>>        else if x mod 7 = 0 then
>>           put "bin" & cr after fld 1
>>        else
>>           put x & cr after fld 1
>>        end if
>>     end repeat
>> end mouseUp
>>
>> Then as I was typing this email I realized I was potentially selling
>> chatgpt short, so I put this in:
>>
>> Modify that code so it works as an "on mouseUp" handler in a button, and
>> concatenates the results on individual lines, and puts the final result
>> into the field "display"
>>
>> And it output this:
>>
>>
>> on mouseUp
>>     put "" into fizzbin
>>     repeat with x = 1 to 100
>>        if x mod 5 = 0 and x mod 7 = 0 then
>>            put "fizz bin" & return after fizzbin
>>        else if x mod 5 = 0 then
>>            put "fizz" & return after fizzbin
>>        else if x mod 7 = 0 then
>>            put "bin" & return after fizzbin
>>        else
>>            put x & return after fizzbin
>>        end if
>>     end repeat
>>     put fizzbin into field "display"
>> end mouseUp
>>
>> And it followed that with instructions:
>>
>> This code uses the "on mouseUp" handler to execute the script when the
>> button is clicked. The results are concatenated and separated by a new line
>> using the "& return" operator after each output. The final result is placed
>> into a field with the name "display" using the "put" command.
>>
>> I'll save you the trouble: that code executes perfectly right out of the
>> box, with no errors, and of course even though I didn't ask it to, it uses
>> a variable to store the intermediate values, saving the field update for
>> the end.
>>
>> If I were writing it, I'd probably do something like
>>
>> on mouseUp
>>     put "" into fizzbin
>>     repeat with x = 1 to 100
>>        if x mod 5 = 0 then put "fizz " after fizzbin
>>        if x mod 7 = 0 then put "bin " after fizzbin
>>        if char -1 of fizzbin is space
>>            then put return into char -1 of fizzbin
>>            else put x & return after fizzbin
>>     end repeat
>>     put fizzbin into field "display"
>> end mouseUp
>>
>> That might be a bit faster, but probably not as clear.
>>
>> Finally, I gave it the input:
>>
>> Now rewrite the code to be a function named "fizzbin" that takes an
>> argument "n", repeats with 1 to n, and returns the results.
>>
>> function fizzbin n
>>     put "" into fizzbin
>>     repeat with x = 1 to n
>>        if x mod 5 = 0 and x mod 7 = 0 then
>>            put "fizz bin" & return after fizzbin
>>        else if x mod 5 = 0 then
>>            put "fizz" & return after fizzbin
>>        else if x mod 7 = 0 then
>>            put "bin" & return after fizzbin
>>        else
>>            put x & return after fizzbin
>>        end if
>>     end repeat
>>     return fizzbin
>> end fizzbin
>>
>> This works perfectly, and chat gpt also documents its answer:
>>
>> This code defines a function named "fizzbin" which takes an argument "n"
>> that determines the range of the repeat loop. The function builds the
>> result string in a variable "fizzbin" and return the final result. The
>> calling script can then use the returned value for further processing or
>> for displaying in a field.
>>
>> Grammatical issue notwithstanding, that's good documentation.
>> _______________________________________________
>> 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