Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Code Error

10 views
Skip to first unread message

Özge Yiğit

unread,
Sep 18, 2024, 6:32:11 AM9/18/24
to Pencil Code

replyto = (words) ->

  for word in words

    switch word

      when "merhaba"

        return "Merhaba. Seni dinliyorum."

 


      when "kimsiniz?", "adınız ne?" , "who are you?"

        return "Lady Macbeth."

 

      # Örneğin, "Cinayeti duydunuz mu?"

      when "güç", "öldürme", "duncan", "cinayet", "kral"

        return """

          Güce taparım.

          Güç için her şeyi yaparım.

        """

 

      when "kehanet" , "kehânet" , "kehanetler"

        return """

          Kehanetlerin doğru olduğunu düşünüyorum,

          ama doğru olmaları için onları gerçekleştirmemiz gerektiğine

            inanıyorum. Hiç birimiz işimizi kadere bırakamayız.

          Hepimiz kendi kaderimizi kendi ellerimizle çizeriz.

        """

 

      when "cadılar", "hayır", "şer"

       return """

          Kim demişse her hayırda bir şer,

          ve her şerde bir hayır vardır. Bence doğru.

        """

 

      when "kan", "el"

        return """

          Yapmamız gereken tek şey bunu ellerimizden temizlemek.

        """

 

      when "plan", "fikir", "planlar", "hikaye"

        return """

        Yapmamız gereken tek şey bunu ellerimizden temizlemek."

        """

     

  return random [

    "Erkek değil misiniz siz?"

    "Öyleyse kuşandığınız umut, sarhoş muydu?

    "Yalnızca siz rahat görünün, yüzün değişmesi, korkmak demektir. Gerisini bana bırakın."

  ]

 

 

while true

  await readstr "Bana istediğini sor.", defer t

  words = t.toLowerCase().split /[\s\.,!?]+/

  write replyto words


This code doesnt answer if the question includes one more than word for example "who are you?" do you hae an idea? I asked chatgpt and gave the code so:

const replyto = (words) => {
  const sentence = words.join(" ").toLowerCase(); // Kelimeleri birleştirip tek bir string yapıyoruz
 
  if (sentence.includes("merhaba")) {
    return "Merhaba. Seni dinliyorum.";
  } else if (sentence.includes("who are you") || sentence.includes("adınız")) {
    return "Lady Macbeth.";
  } else if (sentence.includes("güç") || sentence.includes("öldürme") || sentence.includes("duncan") || sentence.includes("cinayet") || sentence.includes("kral")) {
    return `
      Güce taparım.
      Güç için her şeyi yaparım.
    `;
  } else if (sentence.includes("kehanet") || sentence.includes("kehânet") || sentence.includes("kehanetler")) {
    return `
      Kehanetlerin doğru olduğunu düşünüyorum,
      ama doğru olmaları için onları gerçekleştirmemiz gerektiğine
      inanıyorum. Hiç birimiz işimizi kadere bırakamayız.
      Hepimiz kendi kaderimizi kendi ellerimizle çizeriz.
    `;
  } else if (sentence.includes("cadılar") || sentence.includes("hayır") || sentence.includes("şer")) {
    return `
      Kim demişse her hayırda bir şer,
      ve her şerde bir hayır vardır. Bence doğru.
    `;
  } else if (sentence.includes("kan") || sentence.includes("el")) {
    return `
      Yapmamız gereken tek şey bunu ellerimizden temizlemek.
    `;
  } else if (sentence.includes("plan") || sentence.includes("fikir") || sentence.includes("planlar") || sentence.includes("hikaye")) {
    return `
      Yapmamız gereken tek şey bunu ellerimizden temizlemek.
    `;
  } else {
    return [
      "Erkek değil misiniz siz?",
      "Öyleyse kuşandığınız umut, sarhoş muydu?",
      "Yalnızca siz rahat görünün, yüzün değişmesi, korkmak demektir. Gerisini bana bırakın."
    ][Math.floor(Math.random() * 3)];
  }
};

// Örnek kullanım
const run = async () => {
  while (true) {
    let t = await readstr("Bana istediğini sor.");
    let words = t.toLowerCase().split(/[\s\.,!?]+/);
    write(replyto(words));
  }
};

run();


but doesnt work. Thanks for your replies

Andrew Petusky

unread,
Sep 24, 2024, 12:14:15 PM9/24/24
to Pencil Code
You are mixing up the coffeescript switch syntax.  (There are several usage variations, so that's understandable...  I referred to https://www.tutorialspoint.com/coffeescript/switch_statement_in_coffeescript.htm  to sort it out.). In short, you had return statements where you arguably shouldn't have.  I don't know what you were trying to achieve, so I just collected the message and printed it to screen using write.

replyto = (words) ->

  for word in words

    message = switch word

      when "merhaba" then "Merhaba. Seni dinliyorum."

 


      when "kimsiniz?", "adınız ne?" , "who are you?" then "Lady Macbeth."


 

      # Örneğin, "Cinayeti duydunuz mu?"

      when "güç", "öldürme", "duncan", "cinayet", "kral" then """


          Güce taparım.

          Güç için her şeyi yaparım.

        """

 

      when "kehanet" , "kehânet" , "kehanetler" then """


          Kehanetlerin doğru olduğunu düşünüyorum,

          ama doğru olmaları için onları gerçekleştirmemiz gerektiğine

            inanıyorum. Hiç birimiz işimizi kadere bırakamayız.

          Hepimiz kendi kaderimizi kendi ellerimizle çizeriz.

        """

 

      when "cadılar", "hayır", "şer" then  """


          Kim demişse her hayırda bir şer,

          ve her şerde bir hayır vardır. Bence doğru.

        """

 

      when "kan", "el" then """


          Yapmamız gereken tek şey bunu ellerimizden temizlemek.

        """

 

      when "plan", "fikir", "planlar", "hikaye" then """


        Yapmamız gereken tek şey bunu ellerimizden temizlemek."

        """

    write message

  return random [

    "Erkek değil misiniz siz?"

    "Öyleyse kuşandığınız umut, sarhoş muydu?"  #quote was missing here...


    "Yalnızca siz rahat görünün, yüzün değişmesi, korkmak demektir. Gerisini bana bırakın."

  ]

 

 

while true

  await readstr "Bana istediğini sor.", defer t

  words = t.toLowerCase().split /[\s\.,!?]+/

  write replyto words

Reply all
Reply to author
Forward
0 new messages