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@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@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@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to