Libro de ejercicios resueltos de programación en Haskell (versión del 9 de Noviembre de 2011)

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 6 primeras relaciones que tratan sobre definiciones elementales, definiciones por comprensión y definiciones por recursión.

Cuadrados mediante concatenación de cuadrados en Haskell

La semana pasada, @republicofmath planteó en twitter la siguiente pregunta

4=2^2, 9=3^2, 4||9 = 49 = 7^2. 16=4^2, 81=9^2, 16||81= 1681=41^2. Others?

donde x||y es el número obtenido concatenando las cifras de x e y. A partir de esta pregunta he elaborado la siguiente relación de ejercicios para la asignatura de Informática de 1º del Grado en Matemáticas
Read More “Cuadrados mediante concatenación de cuadrados en Haskell”

El tipo abstracto de datos de los grafos en Haskell

Continuando la serie dedicada a los tipos de datos abstractos (TAD) en Haskell, hoy le toca el turno a los grafos. En los próximos, estudiaremos algoritmos sobre grafos basados en este TAD.

Informalmente, un grafo es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos.

El contenido del este artículo es el siguiente:

  • la signatura del TAD de los grafos;
  • la implementación de los grafos mediante vectores de adyacencia y
  • la implementación de los grafos mediante matrices de adyacencia.

Read More “El tipo abstracto de datos de los grafos en Haskell”

El tipo abstracto de datos de los montículos en Haskell

Continuando la serie dedicada a los tipos de datos abstractos (TAD) en Haskell, hoy le toca el turno a los montículos

Un montículo (heap en inglés) es un árbol binario en el que los valores de cada nodo es menor o igual que los valores de sus hijos. Por ejemplo,

el de la izquierda es un montículo, pero el de la derecha no lo es.

El contenido del resto del artículo es el siguiente:

  • la signatura del TAD de los montículos;
  • las propiedades del TAD de los montículos;
  • la implementación, en Haskell, de los montículos mediante tipos de datos algebraicos;
  • la comprobación con QuickCheck de sus propiedades y
  • la implementación de las colas de prioridad mediante montículos.

Read More “El tipo abstracto de datos de los montículos en Haskell”