Biparticiones de un número

Definir la función

tal que (biparticiones n) es la lista de pares de números formados por las primeras cifras de n y las restantes. Por ejemplo,

Soluciones

Números completos

Las descomposiciones de un número n son las parejas de números (x,y) tales que x >= y y la suma de las cuatro operaciones básicas (suma, producto, resta (el mayor menos el menor) y cociente (el mayor entre el menor)) es el número n. Por ejemplo, (8,2) es una descomposición de 36 ya que

Un número es completo si tiene alguna descomposición como las anteriores. Por ejemplo, el 36 es completo pero el 21 no lo es.

Definir las siguientes funciones

tales que

  • (descomposiciones n) es la lista de las descomposiones de n. Por ejemplo,

  • completos es la lista de los números completos. Por ejemplo,

Soluciones

Números libres de cuadrados

Un número entero positivo es libre de cuadrados si no es divisible el cuadrado de ningún entero mayor que 1. Por ejemplo, 70 es libre de cuadrado porque sólo es divisible por 1, 2, 5, 7 y 70; en cambio, 40 no es libre de cuadrados porque es divisible por 2^2.

Definir la función

tal que (libreDeCuadrados x) se verifica si x es libre de cuadrados. Por ejemplo,

Otro ejemplo,

Soluciones

Elementos con su doble en el conjunto

Definir la función

tal que (conDoble xs) es la lista de los elementos del conjunto xs (representado como una lista sin elementos repetidos) cuyo doble pertenece a xs. Por ejemplo,

Referencia: Basado en el problema Doubles de POJ (Peking University Online Judge System).

Soluciones

Suma de subconjuntos

Los subconjuntos de [1, 4, 2] son

Las sumas de sus elementos son

Y la suma de las sumas es 28.

Definir la función

tal que (sumaSubconjuntos xs) es la suma de las sumas de los
subconjuntos de xs. Por ejemplo,

Soluciones

Subrayado de un carácter

Definir el procedimiento

tal que (subraya cs c) escribe la cadena cs y debajo otra subrayando las ocurrencias de c. Por ejemplo,

Soluciones

Sustitución en una posición

Los árboles binarios se pueden representar con el de dato algebraico

Por ejemplo, los árboles

se pueden representar por

Para indicar las posiciones del árbol se define el tipo

donde

representa un movimiento hacia la derecha (D) o a la izquierda. Por ejemplo, las posiciones de los elementos del ej1 son

Definir la función

tal que (sustitucion ds z x) es el árbol obtenido sustituyendo el elemento de x en la posición ds por z. Por ejemplo,

Soluciones

Sumas y restas alternativas

Definir la función

tal que (sumasYrestas xs) es el resultado de alternativamente los elementos de xs. Por ejemplo,

Otros ejemplos,

Soluciones

Listas alternadas

Una lista de números enteros se llama alternada si sus elementos son alternativamente par/impar o impar/par.

Definir la función

tal que (alternada xs) se verifica si xs es una lista alternada. Por ejemplo,

Soluciones

Sumas de posiciones pares e impares

Definir la función

tal que (sumasParesImpares) xs es el par formado por la suma de los elementos de xs en posiciones pares y por la suma de los elementos de xs en posiciones impares. Por ejemplo,

Soluciones

Persistencia multiplicativa de un número

La persistencia multiplicativa de un número es la cantidad de pasos requeridos para reducirlo a una cifra multiplicando sus dígitos. Por ejemplo, la persistencia de 39 es 3 porque 3×9 = 27, 2×7 = 14 y 1×4 = 4.

Definir las funciones

tales que

  • (persistencia x) es la persistencia de x. Por ejemplo,

  • (menorPersistente n) es el menor número con persistencia n. Por ejemplo,

Comprobar con QuickCheck si todos los números menores que 10^233 tienen una persistencia multiplicativa menor o igual que 11.

Nota: Este ejercicio ha sido propuesto por Marcos Giráldez.

Soluciones

Referencias

Primos permutables

Un primo permutable es un número primo tal que todos los números obtenidos permutando sus cifras son primos. Por ejemplo, 337 es un primo permutable ya que 337, 373 y 733 son primos.

Definir las funciones

tales que

  • (esPrimoPermutable x) se verifica si x es un primo permutable. Por ejemplo,

  • primosPermutables es la lista de los primos permutables. Por ejemplo,

Soluciones

Referencias

Números de Lucas

Los números de Lucas son los elementos de la sucesión L(n) definida por

Los primeros números de Lucas son

Definir las funciones

tales que

  • (nLucas n) es el n-ésimo número de Lucas. Por ejemplo,

  • lucas es la lista de los números de Lucas. Por ejemplo,

Soluciones

Soluciones en Maxima

La evaluación de los ejemplos es

Clases de equivalencia

Definir la función

tal que (clasesEquivalencia xs r) es la lista de las clases de equivalencia de xs respecto de la relación de equivalencia r. Por ejemplo,

Soluciones

Solución en Maxima

La evaluación de los ejemplos es

Factorial generalizado

El factorial generalizado de x respecto de y y z es el producto x(x-z)(x-2z) … (x-(y-1)z). Por ejemplo, el factorial generalizado de 7 respecto de 3 y 2 es 7x5x3 = 105 y el de 7 respecto de 2 y 3 es 7×4 = 28

Definir la función

tal que (factGen x y z) es el factorial generalizado de x respecto de y y z. Por ejemplo,

Nota: Se supone que x, y y z son positivos y z < x.

Comprobar con QuickCheck que (factGen x x 1) es el factorial de x.

Soluciones

Solución en Maxima

Compactación de listas

Definir la función

tal que (compacta xs) es la lista obtenida al compactar xs con las siguientes reglas:

  1. se eliminan los elementos Nothing;
  2. si dos elementos consecutivos tienen el mismo valor, se sustituyen por el sucesor de su valor y
  3. los restantes elementos no se cambian.

Por ejemplo,

Soluciones

Eliminación de espacios extremos

Definir la función

tal que (sinEspaciosExtremos cs) es la cadena obtenida eliminando los espacios blancos de los extremos de la cadena cs. Por ejemplo,

Soluciones

El algoritmo binario del mcd

El máximo común divisor (mcd) de dos números enteros no negativos se puede calcular mediante un algoritmo binario basado en las siguientes propiedades:

  1. Si a,b son pares, entonces mcd(a,b) = 2*mcd(a/2,b/2)
  2. Si a es par y b impar, entonces mcd(a,b) = mcd(a/2,b)
  3. Si a es impar y b par, entonces mcd(a,b) = mcd(a,b/2)
  4. Si a y b son impares y a > b, entonces mcd(a,b) = mcd((a-b)/2,b)
  5. Si a y b son impares y a < b, entonces mcd(a,b) = mcd(a,(b-a)/2)
  6. mcd(a,0) = a
  7. mcd(0,b) = b
  8. mcd(a,a) = a

Por ejemplo, el cálculo del mcd(660,420) es

Definir la función

Definir la función

tal que (mcd a b) es el máximo común divisor de a y b calculado mediante el algoritmo binario del mcd. Por ejemplo,

Comprobar con QuickCheck que, para los enteros no negativos, las funciones mcd y gcd son equivalentes.

Soluciones

De árboles a listas

Los árboles binarios con datos en nodos y hojas se definen por

Por ejemplo, el árbol

se representa por

Definir la función

tal que (sucesores t) es la lista de los pares formados por los elementos del árbol t junto con sus sucesores. Por ejemplo,

Soluciones

Lista tautológica de literales

En lógica matemática, un literal http://bit.ly/1RQ5yJU es una fórmula atómica o su negación. Se puede definir por el tipo de dato

Por ejemplo, el literal los literales p y ¬q se representan por las expresiones (Atom «p») y (Neg (Atom «q»)), respectivamente.

Una lista de literales (que se interpreta como su disyunción) es un tautología si contiene a una fórmula atómica y su negación.

Definir la función

tal que (tautologia xs) se verifica si la lista de literales xs es una tautología. Por ejemplo,

Soluciones

[schedule expon=’2016-01-21′ expat=»06:00″]

  • Las soluciones se pueden escribir en los comentarios hasta el 21 de enero.
  • El código se debe escribir entre una línea con <pre lang=»haskell»> y otra con </pre>

[/schedule]

[schedule on=’2016-01-21′ at=»06:00″]

[/schedule]

Cambios de signo

En una lista xs se produce un cambio de signo por cada elemento x de la lista junto el primero de los elementos de xs con signo opuesto al de x. Por ejemplo,en la lista [6,5,-4,0,-2,-7,0,-8,-1,4] hay 2 cambios de signo (entre (5,-4) y (-1,4)) y en la lista [6,5,-4,0, 2,-7,0,-8,-1,4] hay 4 cambios de signo (entre (5,-4), (-4,2), (2,-7) y(-1,4)).

Definir la función

tal que (nCambios xs) es el número de cambios de signos de la lista xs. Por ejemplo,

Soluciones

Parte libre de cuadrados y parte cuadrada de un número

La parte libre de cuadrados de un número n es el producto de todos sus divisores primos con exponente impar en la factorización prima de n. Por ejemplo, la parte libre de cuadrados de 360 es 10 ya que 360 = 2³3²5 y 2.5 = 10; además, 360 = 10.6²

La parte cuadrada de un número n es el mayor número cuadrado que divide a n. Por ejemplo, la parte cuadrada de 360 es 6.

Definir las funciones

tales que

  • (parteLibre x) es la parte libre de x. Por ejemplo,

  • (parteCuadrada x) es la parte cuadrada de x. Por ejemplo,

Soluciones

Referencias

Fórmula dual

Las fórmulas proposicionales construidas con las constantes verdadero (⊤), falso (⊥), las variables proposicionales y las conectivas de negación (¬), conjunción (∧) y disyunción (∨) se pueden definir usando el siguiente tipo de datos

Por ejemplo, la fórmula (A ∧ ⊥) ∨ (⊤ ∧ B) se representa por

La fórmula dual de una fórmula p es la fórmula obtenida intercambiando en p las ∧ por ∨ y también las ⊤ por ⊥. Por ejemplo, la dual de (A ∧ ⊥) ∨ (⊤ ∧ B) es (A ∨ ⊤) ∧ (⊥ ∨ B)

Definir la función

tal que (dual p) es la dual de p. Por ejemplo,

Soluciones

Elementos óptimos

Definir la función

tal que (optimos r f xs) es la lista de los elementos de xs donde la función f alcanza sus valores óptimos respecto de la relación r. Por ejemplo,

Soluciones

Elementos maximales

Definir la función

tal que (maximales r xs) es la lista de los elementos de xs para los que no hay ningún otro elemento de xs mayor según la relación r. Por ejemplo,

Soluciones

Reconocimiento de anterior

Definir la función

tal que (esAnterior xs y z) se verifica si y ocurre en xs antes que z (que puede no pertenecer a xs). Por ejemplo,

Soluciones

Operación sobre todos los pares

Definir la función

tal que (todosPares f xs ys) es el resultado de aplicar la operación f a todos los pares de xs e ys. Por ejemplo,

Soluciones

Producto infinito

Definir la función

tal que (productoInfinito xs) es la lista infinita que en la posición N tiene el producto de los N primeros elementos de la lista infinita xs. Por ejemplo,

Nota: Este ejercicio es parte del examen del grupo 3 del 2 de diciembre.

Soluciones

Suma de elementos en posiciones dadas

Definir la función

tal que (sumaEnPosicion xs ys) es la suma de todos los elementos de xs cuyas posiciones se indican en ys. Por ejemplo,

Soluciones

Ganadores de las elecciones

Los resultados de las votaciones a delegado en un grupo de clase se recogen mediante listas de asociación. Por ejemplo,

Definir la función

tal que (ganadores xs) es la lista de los estudiantes con mayor número de votos en xs. Por ejemplo,

Soluciones