Autor Tema: ChatGPT falla con el silogismo de Lewis Carroll

0 Usuarios y 1 Visitante están viendo este tema.

10 Enero, 2023, 04:52 pm
Respuesta #20

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 12,032
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Ya vieron que no es tan hábil con la matemática, luego pedirle que haga un programa relacionado con matemática a ver si sabe programar no tiene mucho sentido o lógica ¿no?
Es como ver que Superman no puede caminar sosteniendo criptonita y luego le pidan que vuele sosteniendo una, a ver si sabe volar. No, pídanselo sin criptonita.

Pidanle un programa que no tenga tanto que ver con mates.
Un 3 en línea, un adivina la palabra (o película, frase, etc), un contador de vocales en una palabra...
Sí, tienen que ver con mates, pero no tanto.
Algo totalmente sin mates no se me ocurre.


Funciona bien para programar, sólo hay que explicarle con un poco de detalle lo que quieres y entiende muy bien lo que se le pide.
Al principio tenía mucho trabajo y se ha cortado mientras programaba lo que le había pedido (lo que le he pedido casi seguro que no lo ha encontrado en internet ni se lo ha pedido nadie, aunque sea matemáticas, es una cosa "muy mía") así que le he dicho:

-Hola. Parece que ahora hay muchos usuarios pidiéndote cosas y no has podido terminar el programa que te pedía, lo siento. ¿Qué hora es buena para que lo puedas hacer con más tranquilidad?
Gracias.

-Respuesta:

Hola! No hay necesidad de disculparse, estoy siempre aquí para ayudar. En cuanto al programa que me pidiste, aún no tengo suficiente información para saber de qué se trata exactamente. ¿Podrías proporcionarme más detalles sobre el programa que necesitas? Estaré encantada de ayudarte en lo que necesites.

-Le explico:

Se trataba de esta tarea:
Dado un número semiprimo impar, esto es, producto de dos números primos a y b ambos distintos de 2, podemos tomar como número central uno u otro, (o sea, a ó b) de tal forma que podemos escribir una cantidad b de números enteros consecutivos (siendo a, por ejemplo, el número central) de manera que la suma de dichos números dé como resultado el producto s=a*b.
Ejemplo:
a=5; b=11; s=55.
Entonces
0+1+2+3+4+5+6+7+8+9+10=55
La cantidad de sumandos es b=11 y el número centra es a=5, queriendo decir esto que quedan tantos sumandos a la izquierda como a la derecha respecto del 5:
a la izquierda están los sumandos menores que 5, que son 0,1,2,3,4 y que hacen una cantidad de cinco sumandos, y a la derecha están los sumandos mayores que 5, que son 6,7,8,9,10 y que también son cinco números; es decir, hay la misma cantidad a cada lado del 5 y eso quiere decir que es el número del centro o número central.
Del mismo modo, podemos tomar de número central b y escribir una cantidad a de números consecutivos tal que la suma también sea a*b=55:
9+10+11+12+13
La cantidad de números sumados ahora es a=5 y el número central es 11, ya que, a la izquierda de 11 quedan dos números, 9 y 10, y a la derecha otros dos, 12, 13, la misma cantidad a cada lado.
Considerando a<b, al conjunto de los números consecutivos que tiene a de número central, lo llamaremos conjunto A (en este caso particular es A={0,1,2,3,4,5,6,7,8,9,10}) y al que tiene b como número central lo llamaremos conjunto B (en este caso particular B={9,10,11,12,13}).
Al conjunto intersección de A y B lo vamos a llamar C (en este caso particular es C={9,10}) es decir, los números comunes.
Me gustaría, si es posible, que me hicieras un programa en Python que, dado un semiprimo s=1349 calculara el conjunto intersección C y su cardinal. Y, si también fuera pasible, me gustaría que usaras el módulo Simpy de Python, con su función sprime, o las funciones que fueran necesarias, para que el código resulte más corto.


-Respuesta:

 Entiendo, ese es un problema interesante. La forma en la que podemos resolverlo es utilizando una función que determine los factores primos de un número dado. Luego, una vez que tenemos los factores primos, podemos calcular el conjunto A y B utilizando los métodos que mencionaste. Por favor, tenga en cuenta que el paquete sympy ya tiene una función primefactors() para obtener los factores primos de un número, no un sprime. Pero si esto es lo que necesitas, podríamos crear nuestra propia función para extraer los factores primos y así poder implementar el resto del código.
Entonces, para resolver este problema, primero podemos escribir una función para obtener los factores primos de un número dado, en este caso utilizando sympy:

Código: [Seleccionar]
from sympy import primefactors

def prime_factors(n):
    return primefactors(n)

Una vez que tenemos los factores primos, podemos calcular los conjuntos A y B y luego calcular la intersección de ambos para obtener el conjunto C:


Código: [Seleccionar]
def find_intersection(semiPrime):
    factors = prime_factors(semiPrime)
    a = factors[0]
    b = factors[1]
    A = set(range(a-b//2, a+b//2+1))
    B = set(range(b-a//2, b+a//2+1))
    C = A.intersection(B)
    return C

Luego, podemos llamar a esta función pasándole el número semiprimo como argumento y calcular el tamaño del conjunto C utilizando la función len()

Código: [Seleccionar]
semiPrime = 1349
C = find_intersection(semiPrime)
print("Intersection: ", C)
print("Cardinal of Intersection: ", len(C))


Espero que esto ayude, si tienes alguna pregunta adicional no dudes en preguntarme.


-Muchas gracias, muy amable.

- ¡De nada! Estoy contenta de poder ayudarte. Si necesitas ayuda con algo más, no dudes en preguntar.

10 Enero, 2023, 06:55 pm
Respuesta #21

Sexto Gramaticus

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 5
  • Karma: +0/-0
  • Sexo: Masculino
Soy Elius, estoy usando la cuenta de un amigo porque la mía quedó bloqueda al cambiar el email.

Por otro lado, estaría bien ver el código que daba para lo de los números periódicos, a ver qué interpreta mal.
Este es el código que me dio, en awk, para no tener que compilarlo:

# Función que determina si una división es periódica
function es_periodica(numerador, denominador) {
  cociente = numerador / denominador
  resto = numerador % denominador
  cociente_cadena = cociente
  longitud_cociente = length(cociente_cadena)

  # Si el resto es cero, no es una división periódica
  if (resto == 0) {
    return 0
  }

  # Si el cociente es periódico, el período es el tamaño de la repetición
  for (i = 1; i <= longitud_cociente / 2; i++) {
    if (longitud_cociente % i == 0) {
      es_periodico = 1
      for (j = 0; j < i; j++) {
        patron = substr(cociente_cadena, j + 1, i)
        for (k = i; k <= longitud_cociente; k += i) {
          fragmento = substr(cociente_cadena, k, i)
          if (patron != fragmento) {
            es_periodico = 0
            break
          }
        }
        if (es_periodico && k > longitud_cociente) {
          return i
        }
      }
    }
  }

  # Si el cociente no es periódico, buscamos el período en la parte decimal
  longitud_periodo = 1
  resto_cadena = resto
  longitud_resto = length(resto_cadena)
  while (longitud_periodo <= longitud_resto / 2) {
    es_periodico = 1
    for (i = 0; i < longitud_periodo; i++) {
      patron = substr(resto_cadena, i + 1, longitud_periodo)
      for (j = longitud_periodo; j <= longitud_resto; j += longitud_periodo) {
        fragmento = substr(resto_cadena, j, longitud_periodo)
        if (patron != fragmento) {
          es_periodico = 0
          break
        }
      }
      if (es_periodico && j > longitud_resto) {
        return longitud_periodo
      }
    }
    longitud_periodo++
  }
  return 0
}

# Programa principal
{
  if (es_periodica($1, $2)) {
    printf "La división es periódica y el período es %d\n", es_periodica($1, $2)
  } else {
    printf "La división no es periódica\n"
  }
}

Me puse a analizarlo, pero veo que usa criterios basados en cadenas de caracteres, y no en números, y no termino de entender la base de este método, por lo que por ahora abandoné el análisis.
Si lo encuentran, me cuentan.


10 Enero, 2023, 07:17 pm
Respuesta #22

Sexto Gramaticus

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 5
  • Karma: +0/-0
  • Sexo: Masculino
Funciona bien para programar, sólo hay que explicarle con un poco de detalle lo que quieres y entiende muy bien lo que se le pide.
No digo que no sea buena en muchas cosas, y sobre todo, útil más allá del cuento del Golem que nos quieren vender. Sólo quería puntualizar que hay mucha exageración a favor, y en contra nuestra pero a favor de la AI (que es tan buena que nos quedaremos sin trabajo, que la AI de Google cobró conciencia y tiene sentimientos, etc.).
Lo que me sorprende es que la empresa (OpenAI, no Google, que es mucho más prudente) tiene un marketing que fomenta la histeria, y no establece los límites a los que puede llegar. Ellos deben saber bien en qué es buena y en qué falla, o falta desarrollar. Tampoco tiene un mecanismo de auto revisión.

11 Enero, 2023, 02:06 am
Respuesta #23

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Soy Elius, estoy usando la cuenta de un amigo porque la mía quedó bloqueda al cambiar el email.
 

Hola.
Activé tu cuenta de "Elius".
¿Podrías fijarte si ya te es posible ingresar desde dicha cuenta?
Saludos.

11 Enero, 2023, 02:30 am
Respuesta #24

Elius

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 399
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Soy Elius, estoy usando la cuenta de un amigo porque la mía quedó bloqueda al cambiar el email.
 

Hola.
Activé tu cuenta de "Elius".
¿Podrías fijarte si ya te es posible ingresar desde dicha cuenta?
Saludos.

Hola, Argentinator, ya pude entrar con el usuario Elius.
¡Muchas gracias!