LI2011-12: 3º examen de la evaluación continua

En la clase de hoy del curso Lógica Informática se ha realizado el tercer examen de la evaluación continua, en el que se incluye los 8 primeros temas:

  1. Sintaxis y semántica de la lógica proposicional.
  2. Deducción natural proposicional.
  3. Tableros semánticos proposicionales.
  4. Formas normales.
  5. Resolución proposicional.
  6. Sintaxis y semántica de la lógica de primer orden.
  7. Deducción natural en lógica de primer orden.
  8. Tableros semánticos en lógica de primer orden.

A un primo de un múltiplo del inverso en Haskell

La semana pasada en el blog Números y algo más se planteó el problema Igual a un múltiplo del “inverso” mas/ menos un primo cuyo enunciado es el siguiente:

El número 21 es el menor número que es igual a un múltiplo de sí mismo dado vuelta (2 x12) más/menos (-3) un primo menor que él:
      21 = 12 x 2 – 3
El siguiente es:
      31 = 13 x 2 + 5
En este caso vemos que el número original también es primo.

La solución 13 = 31 x 6 – 173 no es válida ya que 173 a pesar de ser primo es mayor que 13.

Buscando sólo primos que tengan esta propiedad el siguiente que cumple es el 41 y para el cual tenemos dos soluciones:
      41 = 14 x 2 + 13
      41 = 14 x 5 – 29

El primer primo que tiene cuatro soluciones es el 61:
      61 = 16 x 2 + 29
      61 = 16 x 3 + 13
      61 = 16 x 4 – 3
      61 = 16 x 5 – 19

¿Cuál es el primer primo que tiene cinco soluciones? ¿y el primero que tiene seis?

A partir de dicho problema he escrito en LógicaMente dos relaciones de ejercicios. La primera usando una definición elemental de números primos y la segunda usando la librería Data.Numbers.Primes. Finalmente se compara la eficiencia de ambas definiciones para resolver el problema.

La primera relación es la siguiente
Read More “A un primo de un múltiplo del inverso en Haskell”

Enumeración de los árboles binarios en Haskell

En esta relación se definen funciones que enumeran el conjunto de los árboles binarios cuyas hojas son números naturales; es decir, funciones biyectivas f: \mathbb{N} \to A y g: A \to \mathbb{N}, donde A es el conjunto de los árboles binarios cuyas hojas son números naturales. La propiedad biyectiva se comprueba mostrando que f \cdot g y g \cdot f son la identidad.

La enumeración se basa en la de los pares de números naturales vista
en el módulo Enumeración del producto cartesiano de los naturales.
Read More “Enumeración de los árboles binarios en Haskell”

I1M2011: Ejercicios de definiciones por recursión y comprensión y sobre cadenas en Haskell

La clase de hoy de Informática de 1º del Grado en Matemáticas hemos comentando las soluciones de ejercicios de las dos primeras partes de la 9ª relación.

La 1ª parte contiene ejercicios con definiciones por comprensión y recursión. En concreto, se estudian funciones para calcular

  • la compra de una persona agarrada y
  • la división de una lista numérica según su media.

La 2ª parte contiene ejercicios sobre cadenas. En concreto, se estudian funciones para calcular

  • la suma de los dígitos de una cadena,
  • la capitalización de una cadena,
  • el título con las reglas de mayúsculas iniciales,
  • la búsqueda en crucigramas,
  • las posiciones de un carácter en una cadena y
  • si una cadena es una subcadena de otra.

Estos ejercicios corresponden a los temas 5, 6 y 7.

Los ejercicios, y sus soluciones, se muestran a continuación:
Read More “I1M2011: Ejercicios de definiciones por recursión y comprensión y sobre cadenas en Haskell”