Menu Close

Etiqueta: I1M2011

I1M2011: Programa de cifras y letras en Haskell (1/2)

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos comenzado a desarrollar un programa en Haskell para resolver los problemas aritméticos del concurso Cifras y letras que consisten en dada una sucesión de números naturales y un número objetivo, intentar construir una expresión cuyo valor es el objetivo combinando los números de la sucesión usando suma, resta, multiplicación, división y paréntesis. Además, cada número de la sucesión puede usarse como máximo una vez y todos los números, incluyendo los resultados intermedios tienen que ser enteros positivos (1,2,3,…).

Por ejemplo, dada la sucesión 1, 3, 7, 10, 25, 50 y el objetivo 765, una solución es (1+50)*(25−10). Para el problema anterior existen 780 soluciones. En cambio, con la sucesión anterior y el objetivo 831, no hay solución.

En esta clase hemos estudiado cómo escribir un programa para resolver el problema por fuerza bruta. En la próxima estudiaremos cómo mejorar el programa.

El código del programa es

I1M2011: Combinatoria en Haskell (3)

En la clase de hoy de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los ejercicios 13 a 34 de la 17ª relación.

El objetivo de esta relación es estudiar la generación y el número de las principales operaciones de la combinatoria. En concreto, se estudia

  • Permutaciones.
  • Combinaciones sin repetición..
  • Combinaciones con repetición
  • Variaciones sin repetición.
  • Variaciones con repetición.

Además, se estudia dos temas relacionados:

  • Reconocimiento y generación de subconjuntos y
  • El triángulo de Pascal

Los ejercicios, y sus soluciones, se muestran a continuación.

I1M2011: Ejercicios sobre tipos algebraicos en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los ejercicios de la 18ª relación.

En esta relación se presenta ejercicios sobre tipos de datos algebraicos. Se consideran 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:

  • la ocurrencia de un elemento en el árbol,
  • el número de hojas
  • el carácter balanceado de un árbol,
  • el árbol balanceado correspondiente a una lista,

Los ejercicios, y sus soluciones, se muestran a continuación.

I1M2011: Ejercicios sobre árboles binarios en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los ejercicios de la 19ª relación.

En esta relación 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.

I1M2011: Libro de ejercicios resueltos de programación en Haskell (v. 18-Feb-12)

A lo largo del curso iré actualizando un libro de ejercicios resueltos de programación con Haskell con las relaciones de ejercicios del curso de Informática (de 1º del Grado en Matemáticas)

En la versión actual contiene las soluciones de las 16 primeras relaciones y los 3 primeros exámenes:

  1. Definiciones elementales de funciones (1).
  2. Definiciones elementales de funciones (2).
  3. Definiciones por comprensión (1).
  4. Definiciones por comprensión (2).
  5. Definiciones por comprensión (3): El cifrado César.
  6. Definiciones por recursión.
  7. Definiciones por recursión y por comprensión (1).
  8. Definiciones por recursión y por comprensión (2).
  9. Definiciones sobre cadenas, orden superior y plegado.
  10. Definiciones por plegado.
  11. Codificación y transmisión de mensajes.
  12. Resolución de problemas matemáticos.
  13. Demostración de propiedades por inducción.
  14. El 2011 y los números primos.
  15. Listas infinitas.
  16. Ejercicios de exámenes del curso 2010-11.
  17. Exámenes:
    • Examen 1 (26 de Octubre de 2011).
    • Examen 2 (30 de Noviembre de 2011).
    • Examen 3 (25 de Enero de 2012).

I1M2011: Combinatoria en Haskell (2)

En segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los ejercicios 7 a 12 de la 17ª relación.

El objetivo de esta relación es estudiar la generación y el número de las principales operaciones de la combinatoria. En concreto, se
estudia

  • Permutaciones.
  • Combinaciones sin repetición..
  • Combinaciones con repetición
  • Variaciones sin repetición.
  • Variaciones con repetición.

Además, se estudia dos temas relacionados:

  • Reconocimiento y generación de subconjuntos y
  • El triángulo de Pascal

Los 12 primeros ejercicios, y sus soluciones, se muestran a continuación.

I1M2011: Definición de tipos de datos recursivos en Haskell

En la primera parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado la definición de tipos de datos recursivos y de funciones sobre dichos tipos. Concretamente, se han estudiado las listas y los árboles.

Se ha insistido en la metodología de definición de funciones recursivas sobre tipos de datos escribiendo una ecuación por cada uno de los constructores del tipo de dato.

Las transparencias usadas en la clase son las páginas 17-21 del tema 9:

I1M2011: Combinatoria en Haskell (1)

En segunda parte de la clase de hoy de Informática de 1º del Grado en Matemáticas se han explicado las soluciones de los 6 primeros ejercicios de la 16ª relación.

El objetivo de esta relación es estudiar la generación y el número de
las principales operaciones de la combinatoria. En concreto, se
estudia

  • Permutaciones.
  • Combinaciones sin repetición..
  • Combinaciones con repetición
  • Variaciones sin repetición.
  • Variaciones con repetición.

Además, se estudia dos temas relacionados:

  • Reconocimiento y generación de subconjuntos y
  • El triángulo de Pascal

Los ejercicios, y sus soluciones, se muestran a continuación.