La semana en Exercitium (18 de marzo de 2023)

Esta semana he publicado en Exercitium las soluciones de los siguientes problemas:

A continuación se muestran las soluciones.
Read More “La semana en Exercitium (18 de marzo de 2023)”

La semana en Exercitium (4 de marzo de 2023)

Esta semana he publicado en Exercitium las soluciones de los siguientes problemas:

A continuación se muestran las soluciones.
Read More “La semana en Exercitium (4 de marzo de 2023)”

Prácticas sobre tipos algebraicos de datos en Haskell con ChatGPT

En un artículo anterior mostré el uso de ChatGPT como profesor de programación en Haskell. Los ejercicios que propuso fueron muy simples, pero se puede elegir determinados tema para practicar; por ejemplo, tipos de datos algebraicos. En la siguiente conversación se muestra cómo puede hacerse (incluyendo algún fallo por parte de ChatGPT).


Yo: Escribe solamente el enunciado de un ejercicio de programación con Haskell sobre tipos algebraicos de datos, pero no escriba su respuesta. Espera que yo escriba la respuesta y corrígela.

ChatGPT: Aquí está el enunciado del ejercicio:

Escribe una definición de tipo algebraico de datos en Haskell para modelar una lista polimórfica y luego implementa una función que tome dos listas y las concatene en una sola lista. Asegúrate de manejar correctamente los casos base y recursivos.

Yo:

ChatGPT: ¡Correcto! Tu respuesta es la solución del ejercicio de programación Haskell sobre tipos algebraicos de datos que propuse. Has definido un tipo algebraico de datos Lista que puede ser Vacia o un valor Cons que consiste en un valor de tipo a y una Lista adicional. Luego, has implementado una función concatenacion que toma dos listas y las concatena en una sola lista utilizando la recursión y manejo adecuado de casos base. ¡Bien hecho!

Yo: Otro.

ChatGPT: ¡Por supuesto! Aquí está el enunciado del ejercicio:

Define un tipo algebraico de datos en Haskell para modelar una expresión aritmética que puede ser una suma, una resta, un producto o una división de dos expresiones aritméticas. Luego, implementa una función que tome una expresión aritmética y calcule su resultado. Asegúrate de manejar correctamente los casos base y recursivos y cualquier posible error de división por cero.

Yo:

ChatGPT: ¡Excelente trabajo! Tu solución es correcta. Has definido un tipo algebraico de datos Expresion que puede ser una suma, resta, producto, división o un número. Luego, has implementado una función valor que toma una expresión aritmética y calcula su valor utilizando una combinación de aplicación parcial, mónadas y manejando adecuadamente el posible error de división por cero mediante Maybe. ¡Muy bien hecho!

Yo: Otro.

ChatGPT: ¡Claro! Aquí está el enunciado del ejercicio:

Define un tipo algebraico de datos en Haskell para modelar un árbol binario que puede ser un árbol vacío o un nodo con un valor y dos sub-árboles. Luego, implementa una función que tome un árbol binario y calcule su altura (es decir, la longitud del camino más largo desde la raíz hasta cualquier hoja). Asegúrate de manejar correctamente los casos base y recursivos.

Yo:

ChatGPT: ¡Correcto! Tu solución es la solución del ejercicio de programación Haskell sobre tipos algebraicos de datos que propuse. Has definido un tipo algebraico de datos Arbol que puede ser un Vacio o un Nodo que contiene un valor y dos sub-árboles. Luego, has implementado una función altura que toma un árbol binario y calcula su altura utilizando la recursión y manejando adecuadamente los casos base. ¡Muy bien hecho!

Yo: ¿No falta sumar 1 en el caso recursivo?

ChatGPT: Tienes razón, ¡gracias por señalarlo! En el caso recursivo de la función altura, debemos sumar 1 al máximo de las alturas de los dos sub-árboles, ya que el nodo actual también cuenta como una unidad de altura. Entonces, la solución correcta sería la siguiente:

De esta manera, la función altura calcula correctamente la altura de un árbol binario. ¡Gracias por la corrección!


ChatGPT como profesor de historia de las matemáticas

En el artículo anterior mostré cómo se puede usar ChatGPT como profesor de programación con Haskell. El mismo procedimiento se puede aplicar a cualquier tema; por ejemplo, a la historia de las matemáticas como se muestra en la siguiente conversación.


Yo: Escribe solamente una pregunta sobre historia de la matemática, pero no escriba su respuesta. Espera que yo escriba la respuesta y corrígela.

ChatGPT: ¿Cuál fue la contribución más importante de Euclides a la geometría?

Yo: Los elementos

ChatGPT: ¡Correcto! La contribución más importante de Euclides a la geometría fue su obra “Los Elementos”, una colección de trece libros que incluyen una exposición sistemática de la geometría euclidiana y que ha sido una referencia fundamental para los matemáticos durante más de 2.000 años.

Yo: Otra.

ChatGPT: ¿Cuál fue la importancia de la obra “Arithmetica” de Diophantus en la historia de las matemáticas?

Yo: Es el inicio de la teoría de números.

ChatGPT: Más o menos correcto. La obra “Arithmetica” de Diophantus fue importante porque fue una de las primeras obras en introducir el uso de símbolos para representar cantidades desconocidas en ecuaciones y sistemas de ecuaciones. Además, Diophantus también fue uno de los primeros en trabajar con ecuaciones diofánticas, que son ecuaciones con coeficientes enteros y soluciones enteras, lo que se considera el inicio de la teoría de números. Por lo tanto, la obra “Arithmetica” es importante tanto para la historia de la álgebra como para la teoría de números.

Yo: Otra.

ChatGPT: ¿Qué relación tiene el teorema de Pitágoras con la geometría y cuál fue su importancia en la historia de las matemáticas?

Yo: Usándolo, se demostró la irracionalidad del cuadrado de lado unidad.

ChatGPT: ¡Casi perfecto! El teorema de Pitágoras establece que en un triángulo rectángulo, el cuadrado de la hipotenusa (el lado opuesto al ángulo recto) es igual a la suma de los cuadrados de los catetos (los otros dos lados que forman el ángulo recto). Esta relación es una de las propiedades fundamentales de los triángulos rectángulos y ha sido estudiada por matemáticos de todo el mundo.

En cuanto a su importancia en la historia de las matemáticas, el de Pitágoras se ha utilizado en una gran variedad de campos, desde la astronomía y la física hasta la música y la arquitectura. Además, el teorema de Pitágoras también ha sido utilizado en la demostración de importantes resultados matemáticos, como la demostración de la irracionalidad del número √2, lo que implica que no se puede expresar como una fracción exacta.

Yo: Hasta pronto.

ChatGPT: ¡Hasta pronto! No dudes en preguntarme de nuevo si tienes más preguntas en el futuro. Estaré encantado de ayudarte en lo que pueda.