Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  68 6152
ओम नमो नारायण
Dodecha's Avatar
DonorCrew
Sitat av Quakecry Vis innlegg
Har du forslag til noe jeg kan spørre den om som du kan teste ? Om du gidder. Har som sagt ikke peiling så jeg tenkte bare fort fram et løst eksempel.
Vis hele sitatet...
Sitat av Quakecry Vis innlegg
Bare formuler hva du ønsker på engelsk. F.eks "I need a plugin in Blender that allows me to display the keyboard buttons used somewhere on the screen"
Vis hele sitatet...
"Create a plugin that displays the keys and mouse buttons used in blender wich customizable size and color"
Meningsløst medlem
Quakecry's Avatar
Sitat av Dodecha Vis innlegg
"Create a plugin that displays the keys and mouse buttons used in blender wich customizable size and color"
Vis hele sitatet...
Takk. Her er hva den kom med:

Kode

import bpy

class KeysAndMouseButtonsPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Keys and Mouse Buttons"
    bl_idname = "OBJECT_PT_keys_and_mouse_buttons"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "Tools"

    def draw(self, context):
        layout = self.layout

        obj = context.object

        row = layout.row()
        row.label(text="Keys and Mouse Buttons:")

        # Display a list of the current keys and mouse buttons used in Blender
        keys_and_mouse_buttons = ['A', 'S', 'D', 'Q', 'W', 'E', 'R', 'Left Mouse Button', 'Right Mouse Button']
        for key_or_mouse_button in keys_and_mouse_buttons:
            row = layout.row()
            row.label(text=key_or_mouse_button)

        # Add a slider to allow the user to customize the size of the keys and mouse buttons displayed in the plugin
        layout.separator()
        layout.label(text="Size:")
        layout.prop(obj, "size", slider=True)

        # Add a color picker to allow the user to customize the color of the keys and mouse buttons displayed in the plugin
        layout.separator()
        layout.label(text="Color:")
        layout.prop(obj, "color", text="")

def register():
    bpy.utils.register_class(KeysAndMouseButtonsPanel)

def unregister():
    bpy.utils.unregister_class(KeysAndMouseButtonsPanel)

if __name__ == "__main__":
    register()
To use this plugin, you will need to save it to a file with a .py extension and then install it as a Blender add-on.

Once the plugin is installed, you can access it from the Object properties window in the 3D Viewport. The plugin will display a list of the current keys and mouse buttons used in Blender, and will allow you to customize the size and color of the keys and mouse buttons using the provided UI elements.
Vis hele sitatet...
Hei. Har ikke fått mulighet til å være på Pc'n for å teste ting i det siste. Min erfaring så langt er at mye av kode man ønsker seg blir utelatt. Så med å spesifisere hva som mangler og be om den koden, blir det litt bedre hver gang. Får man feil i koden og forteller det i chatten finner den gjerne selv hva som er problemet. Skal få testet senere, men snake i javascript og webGL hadde vært interessant å se om den får til. Altså tror neppe den klarer det på første, men hvor mye må man bruke teskje før den klarer det, eller om den klarer det i det heletatt hadde vært interessant.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Hvis den der faktisk er ChatGPT-generert er jeg nesten litt imponert. Det er selvsagt rom for forbedring/refaktorering, og koden er temmelig "junior"/elementær mtp at den ble bedt spesifikt om å bruke nyere C#-versjoner og features. Likevel: basert på noen minutters skumming ser dette (overraskende, skal jeg innrømme ) greit ut.

1a synes jeg er helt innafor som OOP. Jeg er godt fornøyd med at den valgte IEnumerable/yield, og tok poenget om custom-generatoren og "utbytting" (altså via interfaces).
Av en dreven utvikler ville jeg forventet mindre kode, enten ved å utnytte at alt dette er IEnumerable<int> (slik man også ser GPT skjønner, da INumberGenerator er en minimal wrapper rundt dette) eller ved å klare seg med Custom-generatoren - den kan man tross alt like gjerne bruke til de andre, uten at man trenger ørten klasser. Eller engang INumberGenerator selv.

1b er mer av det samme, men (enda) mer boilerplate. Jeg tror den kan ha misforstått "OOP" (noe den uansett valgte av seg selv forrige gang) som "lag masse klasser", og dette er også en forståelig feil - enten fra GPT eller en fersk student.

2: Også stort sett fornøyd, noe flisespikking (access modifiers). Av en mer dreven utvikler ville jeg forventet mindre looping. Helt lovlig måte å skrive C# på, men den hadde vært mye vakrere med litt bruk av mer moderne (2007, tror jeg... ) features.
Den kunne godt hatt scoringen som en egen metode, men det er seriøs flisespikking. Jeg ba tross alt teknisk sett om et program.

-

Uansett sitter jeg fortsatt igjen med følelsen av at dette er kode-"forståelse" på linje med en "junior" - for kjernelogikken er svært enkel, og mekanismen for å bytte ut implementasjoner kan også gjøres svært enkel. Likevel er ikke koden alt for enkel. Overkomplisering og "cargo cult programming" er feil vi allerede er flinke nok til å gjøre uten at AI skal pushe oss i den retningen - slik AI er kjent for å gjøre, når vi allerede er flinke til noe eller interesserte i noe.

Det vitner også om det jeg har hintet til tidligere:
GPT er tekstbasert, den har ingen spesifikk ekspertise på koding. Hva for slags konsept den har om koding kommer nødvendigvis i annen rekke etter det den er laget for: å produsere tekst. At den klarer noe som helst innen kode er imponerende. Likevel må man nesten anta at hvis "teksthensyn" kræsjer med "kodehensyn" er den ikke engang ment eller trent til å tenke på sistnevnte.
Den er også treningsbasert. Hvis den trener mye jallakode (noe den gjør, for det utrolig mye av det der ute) vil koden nødvendigvis bli mer jalla, fordi den tenker på dette som naturlige, idiomatiske måter å formulere seg på når den "snakker" kodespråk. (Den "treningen" et menneske gjør fra junior til dreven er helt andre typer trening.)

Så: ser ingen umiddelbare feil. Er koden god? Nei. Den gjør tilsynelatende jobben (som jo er bra, men også en lav bar), men gjør det på en relativt antikk måte. Her har jeg bedt den eksplisitt om å bruke moderne C# og den... gjør ikke det.

(Jeg kan også nevne at jeg henger en del på kodeforum. ChatGPT er kult, men det betyr ikke at "ChatGPT spydde ut dette som ikke funker, halp" gir folk mindre magesår. )
Meningsløst medlem
Quakecry's Avatar
Sitat av robhol Vis innlegg
Sitat
Vis hele sitatet...
Ja, det er nok ganske grunnleggende og elementært her og der. Likevel kult hva den er kapabel til (og kan bli kapabel til i framtiden) som TS nevnte så kan man be den endre, utdype, eller forbedre hvis man spør om det eller vet hva man spør om. Har enda eksemplene du spurte om lagret, så om det er noen forslag til forbedringer du vil jeg skal teste så bare nevn det (men helst på engelsk) er spent på om den hadde klart å forbedre på det du kritiserte Synes det er interessant å lese dine betrakninger hvertfall siden du er flink på slikt.
Sist endret av Quakecry; 28. desember 2022 kl. 16:15.
ओम नमो नारायण
Dodecha's Avatar
DonorCrew
Sitat av Quakecry Vis innlegg
Takk. Her er hva den kom med:

Kode

import bpy

class KeysAndMouseButtonsPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Keys and Mouse Buttons"
    bl_idname = "OBJECT_PT_keys_and_mouse_buttons"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = "Tools"

    def draw(self, context):
        layout = self.layout

        obj = context.object

        row = layout.row()
        row.label(text="Keys and Mouse Buttons:")

        # Display a list of the current keys and mouse buttons used in Blender
        keys_and_mouse_buttons = ['A', 'S', 'D', 'Q', 'W', 'E', 'R', 'Left Mouse Button', 'Right Mouse Button']
        for key_or_mouse_button in keys_and_mouse_buttons:
            row = layout.row()
            row.label(text=key_or_mouse_button)

        # Add a slider to allow the user to customize the size of the keys and mouse buttons displayed in the plugin
        layout.separator()
        layout.label(text="Size:")
        layout.prop(obj, "size", slider=True)

        # Add a color picker to allow the user to customize the color of the keys and mouse buttons displayed in the plugin
        layout.separator()
        layout.label(text="Color:")
        layout.prop(obj, "color", text="")

def register():
    bpy.utils.register_class(KeysAndMouseButtonsPanel)

def unregister():
    bpy.utils.unregister_class(KeysAndMouseButtonsPanel)

if __name__ == "__main__":
    register()
Vis hele sitatet...
Påstår den installerer uten feil, men jeg har sittet i 20 minutter nå der jeg har prøvd å finne instillingene og hvordan man aktiverer funksjonen. Det er ingenting i Object properties window, og det er egentlig rart å legge plugins der, vanligvis legges de i 3D Viewport sidebar.

Så jeg finner den ikke, og får den dessverre ikke til å fungere.
Trenger ikke være på engelsk. Den forstår Norsk også. Kan til og med lage vitser og forstå ironi på Norsk.

Har testet litt obskure ting som c64 assembler og c++. Takler fint korte presise oppgaver men feiler når den skal lage komplette program.
Den kan lage svært detaljerte algoritmer og forklare hvordan ting kan løses så der ser jeg potensial.
Denne fungerte med en gang.

Slik formet jeg spørsmålet: Can you show me the code for a snake game with javascript



Kode

<!DOCTYPE html>
<html>
<head>
  <style>
    canvas {
      border: 1px solid #000;
      background-color: #111;
    }
  </style>
</head>
<body>
  <canvas id="gameCanvas" width="500" height="500"></canvas>
  <script>
    const canvas = document.getElementById('gameCanvas');
    const ctx = canvas.getContext('2d');

    const gridSize = 25;
    const gridCount = 20;

    let snake = [{ x: 7, y: 7 }];
    let direction = 'right';
    let food = { x: 10, y: 10 };

    function draw() {
      ctx.clearRect(0, 0, canvas.width, canvas.height);

      // draw snake
      ctx.fillStyle = '#0f0';
      for (let i = 0; i < snake.length; i++) {
        ctx.fillRect(
          snake[i].x * gridSize,
          snake[i].y * gridSize,
          gridSize,
          gridSize
        );
      }

      // draw food
      ctx.fillStyle = '#f00';
      ctx.fillRect(food.x * gridSize, food.y * gridSize, gridSize, gridSize);
    }

    function update() {
      const head = { ...snake[0] };
      if (direction === 'up') head.y--;
      if (direction === 'down') head.y++;
      if (direction === 'left') head.x--;
      if (direction === 'right') head.x++;

      snake.unshift(head);

      if (head.x === food.x && head.y === food.y) {
        // if snake eats food, generate new food
        food = {
          x: Math.floor(Math.random() * gridCount),
          y: Math.floor(Math.random() * gridCount)
        };
      } else {
        // if snake doesn't eat food, remove last segment
        snake.pop();
      }
    }

    function main() {
      update();
      draw();

      setTimeout(main, 100);
    }

    main();

    // handle keyboard input
    document.addEventListener('keydown', event => {
      if (event.keyCode === 87 && direction !== 'down') direction = 'up'; // W key
      if (event.keyCode === 83 && direction !== 'up') direction = 'down'; // S key
      if (event.keyCode === 65 && direction !== 'right') direction = 'left'; // A key
      if (event.keyCode === 68 && direction !== 'left') direction = 'right'; // D key
    });
  </script>
</body>
</html>
Meningsløst medlem
Quakecry's Avatar
Sitat av robhol Vis innlegg
sitat
Vis hele sitatet...
Tenkte jeg for morroskyld skulle gi den kritikken du ga på eksempel nr 3, og se hva den hadde å si. Hadde vært morro å lese dine betrakninger. Skal slutte å plage deg

"Thank you for clarifying the criticism. I apologize for not using the most modern features of C# in the code above. While the code should work as intended, there are certainly ways to make it more readable, maintainable, and efficient.

One suggestion would be to extract the scoring logic into a separate method. This would make the code easier to understand and test, as the scoring logic would be separated from the rest of the program. Additionally, you could use C# language features such as LINQ and functional programming techniques to reduce the amount of looping and improve performance.

As for the access modifiers, it is generally good practice to use the most restrictive access modifier necessary to ensure the correct level of encapsulation and data protection. In the code above, I used the static modifier for the helper methods, which means that they can be accessed from anywhere within the program without requiring an instance of the Program class. While this is fine in this case, you may want to consider using different access modifiers depending on your specific needs.

Here is a revised version of the code that addresses the criticism by extracting the scoring logic into a separate method and using more modern C# features. "

Kode

using System;
using System.Linq;

namespace DiceGame
{
    class Program
    {
        static void Main(string[] args)
        {
            // Roll the dice
            int[] diceValues = RollDice();

            // Calculate the points
            int points = CalculatePoints(diceValues);

            // Print the points
            Console.WriteLine("Points: " + points);
        }

        // Rolls 6 6-faced dice and returns the values in an array
        static int[] RollDice()
        {
            Random random = new Random();
            return Enumerable.Range(1, 6).Select(i => random.Next(1, 7)).ToArray();
        }

        // Calculates the points based on the dice values
        static int CalculatePoints(int[] diceValues)
        {
            // Check if all dice have the same value
            if (diceValues.All(x => x == diceValues[0]))
            {
                return 4000;
            }

            // Check if all dice are different
            if (diceValues.Distinct().Count() == 6)
            {
                return 2000;
            }

            // Check if three or more dice share one value
            int value = diceValues.GroupBy(x => x).Where(g => g.Count() >= 3).Select(g => g.Key).FirstOrDefault();
            if (value > 0)
            {
                return value == 1 ? 1000 : 100 * value;
            }

            // Otherwise, calculate points for individual dice
            return diceValues.Sum(x => x == 1 ? 100 : x == 5 ? 50 : 0);
        }
    }
}
"In this version, the main program logic is contained in the Main method, which calls the RollDice and CalculatePoints methods to perform the dice rolling and point calculation. The RollDice method uses LINQ and functional programming techniques to generate and shuffle the dice values in a single line of code. The CalculatePoints method uses LINQ and functional programming techniques to check the different conditions and calculate the points, and returns the result."
……………………………………………………
hasjkake's Avatar
Sitat av Kaizen Vis innlegg
Denne fungerte med en gang.

Slik formet jeg spørsmålet: Can you show me the code for a snake game with javascript



Kode

<!DOCTYPE html>
<html>
<head>
  <style>
    canvas {
      border: 1px solid #000;
      background-color: #111;
    }
  </style>
</head>
<body>
  <canvas id="gameCanvas" width="500" height="500"></canvas>
  <script>
    const canvas = document.getElementById('gameCanvas');
    const ctx = canvas.getContext('2d');

    const gridSize = 25;
    const gridCount = 20;

    let snake = [{ x: 7, y: 7 }];
    let direction = 'right';
    let food = { x: 10, y: 10 };

    function draw() {
      ctx.clearRect(0, 0, canvas.width, canvas.height);

      // draw snake
      ctx.fillStyle = '#0f0';
      for (let i = 0; i < snake.length; i++) {
        ctx.fillRect(
          snake[i].x * gridSize,
          snake[i].y * gridSize,
          gridSize,
          gridSize
        );
      }

      // draw food
      ctx.fillStyle = '#f00';
      ctx.fillRect(food.x * gridSize, food.y * gridSize, gridSize, gridSize);
    }

    function update() {
      const head = { ...snake[0] };
      if (direction === 'up') head.y--;
      if (direction === 'down') head.y++;
      if (direction === 'left') head.x--;
      if (direction === 'right') head.x++;

      snake.unshift(head);

      if (head.x === food.x && head.y === food.y) {
        // if snake eats food, generate new food
        food = {
          x: Math.floor(Math.random() * gridCount),
          y: Math.floor(Math.random() * gridCount)
        };
      } else {
        // if snake doesn't eat food, remove last segment
        snake.pop();
      }
    }

    function main() {
      update();
      draw();

      setTimeout(main, 100);
    }

    main();

    // handle keyboard input
    document.addEventListener('keydown', event => {
      if (event.keyCode === 87 && direction !== 'down') direction = 'up'; // W key
      if (event.keyCode === 83 && direction !== 'up') direction = 'down'; // S key
      if (event.keyCode === 65 && direction !== 'right') direction = 'left'; // A key
      if (event.keyCode === 68 && direction !== 'left') direction = 'right'; // D key
    });
  </script>
</body>
</html>
Vis hele sitatet...
Snake game det der ja... Aha


Sitat av Quakecry Vis innlegg
Snip
Vis hele sitatet...
For moderne og en kortere implementasjon kunne den ha droppet using statements, namespacet, klassen og Main metoden men tror den må ha glemt de.

For fibonnacci-oppgaven er det veldig forventet at den, og mesteparten av kodere, gir en løsning basert på rekursjon eller loops. Kunne vært artig å se om den hostet opp en løsning med binets formel eller matrisemultiplikasjon hvis man ga den en begrensning på det. Personlig er jeg fortsatt veldig sikker på at den i alle fall ikke vil komme opp med en (matematisk/logisk) løsning som ikke allerede eksisterer.
Sist endret av m0b; 29. desember 2022 kl. 06:15.
Sitat av m0b Vis innlegg
For moderne og en kortere implementasjon kunne den ha droppet using statements, namespacet, klassen og Main metoden men tror den må ha glemt de.

For fibonnacci-oppgaven er det veldig forventet at den, og mesteparten av kodere, gir en løsning basert på rekursjon eller loops. Kunne vært artig å se om den hostet opp en løsning med binets formel eller matrisemultiplikasjon hvis man ga den en begrensning på det. Personlig er jeg fortsatt veldig sikker på at den i alle fall ikke vil komme opp med en (matematisk/logisk) løsning som ikke allerede eksisterer.
Vis hele sitatet...
Foreløpig baserer den seg bare på tidligere skrevet kode (før 2021). Snake spill o.l er lavt-hengende frukt da dette er oppgaver som har blitt løst tusenvis av ganger før på internett. Jeg merker at den sliter mer og mer jo lenger man kommer utenfor allfarvei. Etterhvert vil vi nok se mer og mer AI genererte løsninger som er riktige men som ikke gir mening for oss, fordi datamaskinen tenker annerledes (ref. sjakk AI´er som gjør uforståelige men riktige moves fordi den tenker så langt frem).
Sist endret av Cheese; 29. desember 2022 kl. 07:11.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Sitat av Quakecry Vis innlegg
<kode>
"In this version, the main program logic is contained in the Main method, which calls the RollDice and CalculatePoints methods to perform the dice rolling and point calculation. The RollDice method uses LINQ and functional programming techniques to generate and shuffle the dice values in a single line of code. The CalculatePoints method uses LINQ and functional programming techniques to check the different conditions and calculate the points, and returns the result."
Vis hele sitatet...
LINQ er alltid bra, bonuspoeng i seg selv IMO.

Problemet er at den mer lesbare koden også avslører en feil jeg gikk glipp av sist. Kun én gruppe av 3+ like terninger scores, og det gikk ikke opp for meg i første vending fordi det er som å lese 70-talls-C og jeg glemte å "forvente" en nøstet loop.
Jeg er litt i tvil om hvor mye skyld i det jeg er, på grunn av tvetydig formulering, men jeg vil jo håpe at folk ville tenkt på at på 6 terninger kan man ha to forskjellige "3 like".

Som sagt: kult at den gir output som i hvert fall virker fornuftig, kult at den klarer å raffinere ting overhodet. Likevel er den raffineringen avhengig av at noen leser output og sier "hei, vent nå litt", og så eventuelt går flere runder med den. Er du utvikler er det sannsynligvis ofte like greit å skrive koden selv, og er du ikke det, så kan du ikke vite hva du får i det hele tatt. Selv om man har vært oppe ei kodenatt før, så kan man også gå glipp av ting, slik jeg nettopp gjorde.

Når det er sagt: det hadde faktisk vært artig å se hva ChatGPT kunne gjort hvis man (mis-)brukte det i forbindelse med en saftig testsuite - jeg tviler på at det er stuerent innenfor ToS, men å gi den beskjed om å fortsette helt til alle testene er grønne kunne jo vært interessant. Da vet man (forhåpentligvis) at alt faktisk stemmer, også.

(Ikke gjør det uten å sjekke med ToS)
A Real Human Bean
Mullah's Avatar
Donor
Sitat av Quakecry Vis innlegg
Takk. Her er hva den kom med:

Kode

...
Vis hele sitatet...
Sitat av Dodecha Vis innlegg
Påstår den installerer uten feil, men jeg har sittet i 20 minutter nå der jeg har prøvd å finne instillingene og hvordan man aktiverer funksjonen. Det er ingenting i Object properties window, og det er egentlig rart å legge plugins der, vanligvis legges de i 3D Viewport sidebar.

Så jeg finner den ikke, og får den dessverre ikke til å fungere.
Vis hele sitatet...
Hva er det egentlig denne pluginen skal gjøre? Det ser ut som at den bare prøver å gjengi en predefinert liste; 'A', 'S', 'D', 'Q', 'W', 'E', 'R', 'Left Mouse Button', 'Right Mouse Button'.

Den hverken leser tastetrykk, eller ser i Blenders config etter mappede taster.
▼ ... noen uker senere ... ▼
Denne YouTube-videoen viser noen spennende sider om denne chat-tjenesten. Den viser dens evne til å lage kode, tenke logisk (med feile med kommafeil på utregning) og feile totalt i kvantefysikk.

https://www.youtube.com/watch?v=GBtfwa-Fexc
▼ ... noen uker senere ... ▼
Meningsløst medlem
Quakecry's Avatar
Sitat av vindaloo Vis innlegg
Vis hele sitatet...
De som blir tatt i juks er bare de som blir fersket av at læreren enten står bak og ser på, eller at dem ikke er smart på måten dem bruker den, og får den til å besvare spørsmålene.
Sitat av Quakecry Vis innlegg
De som blir tatt i juks er bare de som blir fersket av at læreren enten står bak og ser på, eller at dem ikke er smart på måten dem bruker den, og får den til å besvare spørsmålene.
Vis hele sitatet...
Har det ikke alltid vært sånn, at de dumme blir tatt?
▼ ... over en måned senere ... ▼
Er det noen som har testet noen av disse ChatGPT appsa som er tilgjengelig nå? Er de noe tess?

Fundere på å bruke detta til å hjelpe meg i et bokprosjekt for å innhente diverse historiske fakta og tidslinjer.