Cuadrados con los dígitos duplicados en Haskell

La semana pasada se planteó en “Números y algo más …” el problema de los cuadrados con los dígitos duplicados cuyo enunciado es el siguiente:

Si elevamos 72576, que tiene un 2, un 5, un 6 y dos 7, al cuadrado obtenemos 5267275776 el cual tiene exactamente dos 2, dos 5, dos 6 y cuatro 7. Es decir que si en el número original el dígito d aparece v veces, en el cuadrado, d aparece 2v veces. ¿Cual es el siguiente número con esta propiedad? ¿Habrá algún primo que lo haga?

En la siguiente relación de ejercicios (elaborada para la asignatura de Informática de 1º del Grado en Matemáticas) se resuelve el problema con Haskell.
Read More “Cuadrados con los dígitos duplicados en Haskell”

I1M2011: El TAD (tipo abstracto de datos) de las tablas en Haskell

En la clase de hoy de Informática de 1º del Grado en Matemáticas se ha estudiado el TAD (tipo abstracto de datos) de las tablas y 3 implementaciones en Haskell: como funciones, como listas de asociación y como matrices.

Una tabla (array en inglés y tableau en francés) es una colección de elementos (valores) a los que se accede mediante sus índices.

El contenido de la clase ha sido el siguiente:

  • la signatura del TAD de las tablas;
  • las propiedades del TAD de las tablas;
  • las implementaciones, en Haskell, de las tablas mediante funciones, listas de asociación y matrices y
  • la comprobación con QuickCheck de sus propiedades.

Read More “I1M2011: El TAD (tipo abstracto de datos) de las tablas en Haskell”

LMF2012: Formas normales en Haskell

En la clase de hoy del curso de Lógica matemática y fundamentos (de 3º de Grado en Matemáticas) se ha comentado las soluciones de los ejercicios sobre la implementación en Haskell de las formas normales.

Las soluciones de los ejercicios se muestran a continuación. En los ejercicios se usa el módulo SintaxisSemantica desarrollado en la clase del día 13 de marzo.
Read More “LMF2012: Formas normales en Haskell”

LMF2012: Representación del conocimiento mediante lógica de primer orden

En la clase de hoy del curso Lógica matemática y fundamentos se ha presentado la lógica de primer orden como sistema de representación del conocimiento.

Ya hemos estudiado el sistema básico de representación del conocimiento (la lógica proposicional) y tres sistemas deductivos (deducción natural, tableros semánticos y resolución). Además, hemos usado Prover9 y Mace4 para resolver problemas que se pueden codificar mediante la lógica proposicional, como el de las 4 reinas. Un inconveniente de las codificaciones es la cantidad y el tamaño de las fórmulas resultantes.

Una forma de simplificar las codificaiones es mediante el uso de la lógica de primer orden. Este sistema permite representar de forma más compacta conocimiento representable en lógica proposicional y también representar conocimiento que no se puede representar en lógica proposicional.

Como ejemplos de representación hemos visto cómo representar conocimiento geográfico, del mundo de los bloques y conocimiento astronómico. En los distintos ejemplos hemos resaltado los tipos de símbolos lógicos utilizados.

Finalmente, como tutor para la representación del conocimiento, se ha presentado el APLI2 (APLIcación de Ayuda Para Lógica Informática).

Las transparencias de esta clase son las páginas 1 a 10 del tema 6.

Como tarea se propone la resolución de los ejercicios de primer orden del APLI2.