Fracciones que son cuadrados perfectos

Nitesh Singh ha planteado en Mathematics Competitions el siguiente problema:

¿Cuántos números enteros n existen tales que n/(1450−n) es un cuadrado perfecto?

Vamos a generalizarlo y resolverlo con Haskell. La generalización es

Para cada número natural x, calcular los números enteros n tales que n/(x−n) es un cuadrado perfecto.

Escribiremos dos formas de resolverlo y compararemos su eficiencia.

Este ejercicio sirve para ilustrar cómo el prepocesamiento matemático puede ayudar a mejorar la eficiencia de los programas.
Read More “Fracciones que son cuadrados perfectos”

LMF2013: Tableros semánticos 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 los tableros semánticos.

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 27 de febrero.
Read More “LMF2013: Tableros semánticos en Haskell”

I1M2012: 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 tres 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 “I1M2012: El TAD (tipo abstracto de datos) de las tablas en Haskell”