I1M2012: Resolución de problemas matemáticos con Haskell

En las clases de ayer y de hoy de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los ejercicios de la 12ª relación en la que se plantea la resolución de distintos problemas
matemáticos. En concreto,

  • el problema de Ullman sobre la existencia de subconjunto del tamaño dado y con su suma acotada,
  • las descomposiciones de un número como suma de dos cuadrados,
  • el problema 145 del proyecto Euler,
  • el grafo de una función sobre los elementos que cumplen una propiedad,
  • los números semiperfectos,
  • el carácter funcional de una relación y
  • la identidad de Bezout.

Los ejercicios, y sus soluciones, se muestran a continuación.
Read More “I1M2012: Resolución de problemas matemáticos con Haskell”

I1M2012: Simulación de un juego de cartas en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentado las soluciones de los ejercicios de la relación 21. En esta relación se estudia la modelización de un juego de cartas como aplicación de los tipos de datos algebraicos. Además, se definen los generadores correspondientes para comprobar las propiedades con QuickCheck.

Las soluciones de los ejercicios de la relación son
Read More “I1M2012: Simulación de un juego de cartas en Haskell”

I1M2012: Ejercicios con tipos de datos algebraicos en Haskell

En las clases de ayer y hoy de Informática de 1º del Grado en Matemáticas hemos comentando soluciones de los ejercicios sobre tipos de datos algebraicos en Haskell de la relaciones 18 y 19.

En la relación 18 se consideran abreviaturas y dos tipos de datos
algebraicos: los números naturales (para los que se define su
producto) y los árboles binarios, para los que se definen funciones
para calcular:

  • los puntos más cercanos,
  • la ocurrencia de un elemento en el árbol,
  • el número de hojas,
  • el carácter balanceado de un árbol y
  • el árbol balanceado correspondiente a una lista.

En la relación 19 se plantean ejercicios sobre árboles binarios. En
concreto, se definen funciones para calcular:

  • el número de hojas de un árbol,
  • el número de nodos de un árbol,
  • la profundidad de un árbol,
  • el recorrido preorden de un árbol,
  • el recorrido postorden de un árbol,
  • el recorrido preorden de forma iterativa,
  • la imagen especular de un árbol,
  • el subárbol de profundidad dada,
  • el árbol infinito generado con un elemento y
  • el árbol de profundidad dada cuyos nodos son iguales a un elemento.

Los ejercicios, y sus soluciones, se muestran a continuación. Los de la relación 18 son
Read More “I1M2012: Ejercicios con tipos de datos algebraicos en Haskell”

I1M2012: Ejercicios de evaluación perezosa y listas infinitas (3)

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentando soluciones de los sguientes ejercicios de la relación 17 (sobre evaluación perezosa y listas infinitas):

  • 8. Menor número triangular con más de n divisores.
  • 9. Números primos consecutivos con dígitos con igual media.
  • 10. Decisión de pertenencia al rango de una función creciente
  • 11. Pares ordenados por posición.
  • 12. Aplicación iterada de una función.
  • 13. La bicicleta de Turing.
  • 14. La sucesión de Golomb.

Los ejercicios, y sus soluciones, se muestran a continuación
Read More “I1M2012: Ejercicios de evaluación perezosa y listas infinitas (3)”

I1M2012: Ejercicios de evaluación perezosa y listas infinitas (2)

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentando soluciones de ejercicios sobre evaluación perezosa y listas infinitas de las relación 17.

En los comentarios se ha resaltado

  • en los ejercicios 2 y 3:
    • la importancia del orden de las condiciones en las definiciones de listas por comprensión,
    • la eficiencia del cálculo sobre la búsqueda.
  • en el ejecicio 6.2 el uso de iterate y
  • en la definición de los números triangulares el uso de scanl.

Los ejercicios, y sus soluciones, se muestran a continuación
Read More “I1M2012: Ejercicios de evaluación perezosa y listas infinitas (2)”