Un problema de las olimpiadas rusas en Haskell

En el blog Números y algo más plantean hoy un problema de las olimpiadas rusas cuyo enunciado es el siguiente

Si escribimos todos los números enteros empezando por el uno, uno al lado del otro (o sea, 1234567891011121314…), ¿qué dígito ocupa la posición 206788?

Basándome en este problema he escrito la siguiente relación de ejercicios de Haskell para la asignatura de Informática de 1º del Grado en Matemáticas como ejemplo de uso de cadenas infinitas.
Read More “Un problema de las olimpiadas rusas en Haskell”

Libro de ejercicios de programación con Haskell

A lo largo de este curso he ido 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)

Una vez terminado el curso, se ha completado el libro con todas las relaciones del curso y dos apéndices en los que se encuentran las soluciones de los exámenes realizados y una recopilación de algoritmos matemáticos que se han estudiado a lo largo del curso.

I1M2010: Operaciones con el TAD de los polinomios en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado la implentación en Haskell de las operaciones con los polinomios basadas su TAD estudiado en la clase anterior.

Las transparencias usadas en la clase son las páginas 43-55 del tema 21.

El código se encuentra en

  • PolRepTDA: Implementación de los polinomios mediante tipos de datos algebraicos.
  • PolRepDispersa: Implementación de los polinomios mediante listas dispersas.
  • PolRepDensa: Implementación de los polinomios mediante listas densas.
  • PolPropiedades: Propiedades del TAD de los polinomios.
  • PolOperaciones: Operaciones con el TAD de los polinomios.

I1M2010: El TAD de los polinomios en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas hemos estudiado el tipo abstracto de los polinomios y su implementación en Haskell.

Comenzamos la clase analizando las posibles representaciones de los polinomios y, como consecuencia, establecer la signatura y las propiedades del TAD de los polinomios.

A continuación, estudiamos tres implementaciones del TAD de los polinomios: mediante tipos algebraicas, mediantes listas dispersas y mediante listas densas.

Finalmente, mediante QuickCheck, se comprobó que las distintas implementaciones verifican las propiedades del TAD.

Las transparencias usadas en la clase son las páginas 1-42 del tema 21.

El código se encuentra en

  • PolRepTDA: Implementación de los polinomios mediante tipos de datos algebraicos.
  • PolRepDispersa: Implementación de los polinomios mediante listas dispersas.
  • PolRepDensa: Implementación de los polinomios mediante listas densas.
  • PolPropiedades: Propiedades del TAD de los polinomios.