LMF2013: Ejercicios de argumentación en lógica proposicional con Isabelle/HOL

En la clase de hoy del curso Lógica matemática y fundamentos se ha explicado cómo formalizar en lógica proposicional los argumentos de los ejercicios 8 y 9 de la relación 4 y cómo demostrar con Isabelle/HOL su corrección.

Los ejercicios y sus soluciones se muestran a continuación:
Read More “LMF2013: Ejercicios de argumentación en lógica proposicional con Isabelle/HOL”

Rompecabeza de Ullman en Haskell

El problema de Programming Praxis del 7 de diciembre de 2010 consiste en resolver el siguiente rompecabeza de Jeffrey Ullman:

Dada una lista de n números reales, un número real t y un número entero k, determinar si existe un subconjunto de la lista original con k elementos tal que su suma es menor que t.

Por ejemplo, dada la lista de los 25 números reales 18.1, 55.1, 91.2, 74.6, 73.0, 85.9, 73.9, 81.4, 87.1, 49.3, 88.8, 5.7, 26.3, 7.1, 58.2, 31.7, 5.8, 76.9, 16.5, 8.1, 48.3, 6.8, 92.4, 83.0, 19.6, t = 98.2 y k = 3, el conjunto {31.7, 16.5, 19.6} tiene 3 elementos y su suma es 67.8 que es menor que 98.2. Por tanto, el resultado es verdadero.

A partir de dicho problema he preparado la siguiente relación de ejercicios para la asignatura de Informática de 1º del Grado en Matemáticas
Read More “Rompecabeza de Ullman en Haskell”

Números de Lychrel

Según la Wikipedia, un número de Lychrel es un número natural para el que nunca se obtiene un capicúa mediante el proceso de invertir las cifras y sumar los dos números. Por ejemplo, los siguientes números no son números de Lychrel:

  • 56, ya que en un paso se obtiene un capicúa: 56+65=121.
  • 57, ya que en dos pasos se obtiene un capicúa: 57+75=132, 132+231=363
  • 59, ya que en dos pasos se obtiene un capicúa: 59+95=154, 154+451=605, 605+506=1111
  • 89, ya que en 24 pasos se obtiene un capicúa.

En este ejercicio, pensado para la asignatura de Informática (del Grado de Matemáticas) vamos a buscar con Haskell el primer número de Lychrel.
Read More “Números de Lychrel”

Cruce de listas

En esta entrada comento las soluciones en Haskell y Maxima de un problema planteado por Adam Majewski en la lista de Maxima en forma de ejercicio para I1M y PD. Además, añadiré soluciones en otros lenguajes conforme las vaya recibiendo.

1. Solución en Haskell

En este ejercico se usarán las siguientes librerías


Ejercicio 1. Definir la función

tal que (cruce xs ys) es la lista de las listas obtenidas con uniendo las listas de xs sin un elemento con las de ys sin un elemento. Por ejemplo,


Read More “Cruce de listas”