Representación matricial de relaciones binarias

Dada una relación r sobre un conjunto de números enteros, la matriz asociada a r es una matriz booleana p (cuyos elementos son True o False), tal que p(i,j) = True si y sólo si i está relacionado con j mediante la relación r.

Las relaciones binarias homogéneas y las matrices booleanas se pueden representar por

Definir la función

tal que (matrizRB r) es la matriz booleana asociada a r. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Codificación de Gödel

Dada una lista de números naturales xs, codificación de Gödel de xs se obtiene multiplicando las potencias de los primos sucesivos, siendo los exponentes los sucesores de los elementos de xs. Por ejemplo, si xs = [6,0,4], la codificación de xs es

Definir las funciones

tales que

  • (codificaG xs) es la codificación de Gödel de xs. Por ejemplo,

  • (decodificaG n) es la lista xs cuya codificación es n. Por ejemplo,

Comprobar con QuickCheck que ambas funciones son inversas; es decir,

Soluciones

El código se encuentra en GitHub.

Primos circulares

Un primo circular es un número tal que todas las rotaciones de dígitos producen números primos. Por ejemplo, 195 es un primo circular ya que las rotaciones de sus dígitos son 197, 971 y 719 y los tres números son primos.

Definir la lista

cuyo valor es la lista de los números primos circulares. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Diccionario de frecuencias

Definir la función

tal que (frecuencias xs) es el diccionario formado por los elementos de xs junto con el número de veces que aparecen en xs. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Descomposiciones con sumandos 1 ó 2

Definir la funciones

tales que

  • (sumas n) es la lista de las descomposiciones de n como sumas cuyos sumandos son 1 ó 2. Por ejemplo,

  • (nSumas n) es el número de descomposiciones de n como sumas cuyos sumandos son 1 ó 2. Por ejemplo,

Soluciones

El código se encuentra en GitHub.