Problema de las puertas

Un hotel dispone de n habitaciones y n camareros. Los camareros tienen la costumbre de cambiar de estado las puestas (es decir, abrir las cerradas y cerrar las abiertas). El proceso es el siguiente:

  • Inicialmente todas las puertas están cerradas.
  • El primer camarero cambia de estado las puertas de todas las habitaciones.
  • El segundo cambia de estado de las puertas de las habitaciones pares.
  • El tercero cambia de estado todas las puertas que son múltiplos de 3.
  • El cuarto cambia de estado todas las puertas que son múltiplos de 4
  • Así, hasta que ha pasado el último camarero.

Por ejemplo, para n = 5

Los estados de las puertas se representan por el siguiente tipo de datos

Definir la función

tal que (final n) es la lista de los estados de las n puertas después
de que hayan pasado los n camareros. Por
ejemplo,

Soluciones

Densidad de números no monótonos

Un número entero positivo se dice que es

  • creciente si cada uno de sus dígitos es menor o igual que el que está a su derecha; por ejemplo, 134479.
  • decreciente si cada uno de sus dígitos es menor o igual que el que está a su derecha; por ejemplo, 664210.
  • no monótono si no es creciente ni decreciente; por ejemplo, 155369.

Para cada entero positivo n, la densidad números no monótonos hasta n es el cociente entre la cantidad de n números no monótonos entre menores o iguales que n y el número n. Por ejemplo, hasta 150 hay 19 números no monótonos (101, 102, 103, 104, 105, 106, 107, 108, 109, 120, 121, 130, 131, 132, 140, 141, 142, 143 y 150); por tanto, la densidad hasta 150 es 19/150 = 0.12666667

Definir las siguientes funciones

tales que

  • (densidad n) es la densidad de números no monótonos hasta n. Por ejemplo,

  • (menorConDensidadMayor x) es el menor número n tal que la densidad de números no monótonos hasta n es mayor o igual que x. Por ejemplo,

Soluciones

Sucesión fractal

La sucesión fractal

está construida de la siguiente forma:

  • los términos pares forman la sucesión de los números naturales

  • los términos impares forman la misma sucesión original

Definir las funciones

tales que

  • sucFractal es la lista de los términos de la sucesión fractal. Por ejemplo,

  • (sumaSucFractal n) es la suma de los n primeros términos de la sucesión fractal. Por ejemplo,

Soluciones

Referencia

Conjuntos de primos emparejables

Un conjunto de primos emparejables es un conjunto S de números primos tales que al concatenar cualquier par de elementos de S se obtiene un número primo. Por ejemplo, {3, 7, 109, 673} es un conjunto de primos emparejables ya que sus elementos son primos y las concatenaciones de sus parejas son 37, 3109, 3673, 73, 7109, 7673, 1093, 1097, 109673, 6733, 6737 y 673109 son primos.

Definir la función

tal que (emparejables n m) es el conjunto de los conjuntos emparejables de n elementos menores que n. Por ejemplo,

Soluciones

Cadenas de divisores

Una cadena de divisores de un número n es una lista donde cada elemento es un divisor de su siguiente elemento en la lista. Por ejemplo, las cadenas de divisores de 12 son [2,4,12], [2,6,12], [2,12], [3,6,12], [3,12], [4,12], [6,12] y [12].

Definir la función

tal que (cadenasDivisores n) es la lista de las cadenas de divisores de n. Por ejemplo,

Soluciones

Referencias

Mezcla de infinitas listas infinitas

Definir la función

tal que (mezclaTodas xss) es la mezcla ordenada de xss, donde tanto xss como sus elementos son listas infinitas ordenadas. Por ejemplo,

Soluciones

Operaciones con series de potencias

Una serie de potencias es una serie de la forma

Las series de potencias se pueden representar mediante listas
infinitas. Por ejemplo, la serie de la función exponencial es

y se puede representar por [1, 1, 1/2, 1/6, 1/24, 1/120, …]

Las operaciones con series se pueden ver como una generalización de las de los polinomios.

En lo que sigue, usaremos el tipo (Serie a) para representar las series de potencias con coeficientes en a y su definición es

Definir las siguientes funciones

tales que

  • (opuesta xs) es la opuesta de la serie xs. Por ejemplo,

  • (suma xs ys) es la suma de las series xs e ys. Por ejemplo,

  • (resta xs ys) es la resta de las series xs es ys. Por ejemplo,

  • (producto xs ys) es el producto de las series xs e ys. Por ejemplo,

  • (cociente xs ys) es el cociente de las series xs e ys. Por ejemplo,

  • (derivada xs) es la derivada de la serie xs. Por ejemplo,

  • (integral xs) es la integral de la serie xs. Por ejemplo,

  • expx es la serie de la función exponencial. Por ejemplo,

Soluciones

Productos simultáneos de dos y tres números consecutivos

Definir la función

tal que (productos n x) es las listas de n elementos consecutivos cuyo producto es x. Por ejemplo,

Comprobar con QuickCheck que si n > 0 y x > 0, entonces

Usando productos, definir la función

cuyos elementos son los números naturales (no nulos) que pueden expresarse simultáneamente como producto de dos y tres números consecutivos. Por ejemplo,

Nota. Según demostró Mordell en 1962, productosDe2y3consecutivos sólo tiene dos elementos.

Soluciones

Números como sumas de primos consecutivos

En el artículo Integers as a sum of consecutive primes in 2,3,4,.. ways se presentan números que se pueden escribir como sumas de primos consecutivos de varias formas. Por ejemplo, el 41 se puede escribir de dos formas distintas

el 240 se puede escribir de tres formas

y el 311 se puede escribir de 4 formas

Definir la función

tal que (sumas x) es la lista de las formas de escribir x como suma
de dos o más números primos consecutivos. Por ejemplo,

Soluciones

Caminos reducidos

Un camino es una sucesión de pasos en una de las cuatros direcciones Norte, Sur, Este, Oeste. Ir en una dirección y a continuación en la opuesta es un esfuerzo que se puede reducir, Por ejemplo, el camino [Norte,Sur,Este,Sur] se puede reducir a [Este,Sur].

Un camino se dice que es reducido si no tiene dos pasos consecutivos en direcciones opuesta. Por ejemplo, [Este,Sur] es reducido y [Norte,Sur,Este,Sur] no lo es.

En Haskell, las direcciones y los caminos se pueden definir por

Definir la función

tal que (reducido ds) es el camino reducido equivalente al camino ds. Por ejemplo,

Nótese que en el penúltimo ejemplo las reducciones son

Soluciones

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

Raíz entera

Definir la función

tal que (raizEnt x n) es la raíz entera n-ésima de x; es decir, el mayor número entero y tal que y^n <= x. Por ejemplo,

Comprobar con QuickCheck que para todo número natural n,

Soluciones

Soluciones en Maxima

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

Representación decimal de números racionales

Los números decimales se representan por ternas, donde el primer elemento es la parte entera, el segundo es el anteperíodo y el tercero es el período. Por ejemplo,

Su tipo es

Los números racionales se representan por un par de enteros, donde el primer elemento es el numerador y el segundo el denominador. Por ejemplo, el número 2/3 se representa por (2,3). Su tipo es

Definir las funciones

tales que

  • (decimal r) es la representación decimal del número racional r. Por ejemplo,

  • (racional d) es el número racional cuya representación decimal es d. Por ejemplo,

Con la función decimal se puede calcular los períodos de los números racionales. Por ejemplo,

Comprobar con QuickCheck si las funciones decimal y racional son inversas.

Soluciones

Números cuyos dígitos coinciden con los de sus factores primos

Un número n es especial si al unir los dígitos de sus factores primos, se obtienen exactamente los dígitos de n, aunque puede ser en otro orden. Por ejemplo, 1255 es especial, pues los factores primos de 1255 son 5 y 251.

Definir la función

tal que (esEspecial n) se verifica si un número n es especial. Por ejemplo,

Comprobar con QuickCheck que todo número primo es especial.

Calcular los 5 primeros números especiales que no son primos.

Soluciones

Posiciones de máximos locales

Los vectores se definen usando tablas como sigue:

Un elemento de un vector es un máximo local si no tiene ningún elemento adyacente mayor o igual que él.

Definir la función

tal que (posMaxVec p) devuelve las posiciones del vector p en las que p tiene un máximo local. Por ejemplo,

Soluciones

Comportamiento del último dígito en primos consecutivos

El pasado 11 de marzo se ha publicado el artículo Unexpected biases in the distribution of consecutive primes en el que muestra que los números primos repelen a otros primos que terminan en el mismo dígito.

La lista de los últimos dígitos de los 30 primeros números es

Se observa que hay 6 números que su último dígito es un 1 y de sus consecutivos 4 terminan en 3 y 2 terminan en 7.

Definir la función

tal que (distribucionUltimos n) es la matriz cuyo elemento (i,j) indica cuántos de los n primeros números primos terminan en i y su siguiente número primo termina en j. Por ejemplo,

Nota: Se observa cómo se «repelen» ya que en las filas del 1, 3, 7 y 9 el menor elemento es el de la diagonal.

Soluciones

Solución en Maxima

Máxima suma de elementos consecutivos

Definir la función

tal que (sumaMaxima xs) es el valor máximo de la suma de elementos consecutivos de la lista xs. Por ejemplo,

Comprobar con QuickCheck que

Soluciones

Mayor sección inicial sin repetidos

Definir la función

tal que (seccion xs) es el mayor sección inicial de xs que no contiene ningún elemento repetido. Por ejemplo:

Soluciones

Paridad del número de divisores

Definir la función

tal que (nDivisoresPar n) se verifica si n tiene un número par de divisores. Por ejemplo,

Soluciones

Solución en Maxima

Máxima longitud de las sublistas comunes

Las sublistas comunes de «1325» y «36572» son «», «3»,»32″, «35», «2» y «5». El máximo de sus longitudes es 2.

Definir la función

tal que (maximo xs ys) es el máximo de las longitudes de las sublistas comunes de xs e ys. Por ejemplo,

Soluciones

Elemento ausente

Sea xs una lista y n su longitud. Se dice que xs es casi completa si sus elementos son los números enteros entre 0 y n excepto uno. Por ejemplo, la lista [3,0,1] es casi completa.

Definir la función

tal que (ausente xs) es el único entero (entre 0 y la longitud de xs) que no pertenece a la lista casi completa xs. Por ejemplo,

Soluciones

Menor no expresable como suma

Definir la función

tal que (menorNoSuma xs) es el menor número que no se puede escribir como suma de un subconjunto de xs, donde se supone que xs es un conjunto de números enteros positivos. Por ejemplo,

Comprobar con QuickCheck que para todo n,

Soluciones

Números N cuyos cuadrados tienen dos copias de cada dígito de N

La sucesión A114258 de la OEIS está formada por los números n tales que el número de ocurrencia de cada dígito d de n en n² es el doble del número de ocurrencia de d en n. Por ejemplo, 72576 es un elemento de A114258 porque tiene un 2, un 5, un 6 y dos 7 y su cuadrado es 5267275776 que tiene exactamente dos 2, dos 5, dos 6 y cuatro 7.

Un número es especial si pertenece a la sucesión A114258.

Definir la sucesión

cuyos elementos son los números especiales. Por ejemplo,

Soluciones

En Maxima

Índices de números de Fibonacci

Los primeros términos de la sucesión de Fibonacci son

Se observa que el 6º término de la sucesión (comenzando a contar en 0) es el número 8.

Definir la función

tal que (indiceFib x) es justo el número n si x es el n-ésimo términos de la sucesión de Fibonacci o Nothing en el caso de que x no pertenezca a la sucesión. Por ejemplo,

Soluciones

En Maxima

Integración por el método de los rectángulos

La integral definida de una función f entre los límites a y b puede calcularse mediante la regla del rectángulo usando la fórmula

con a+nh+h/2 ≤ b < a+(n+1)h+h/2 y usando valores pequeños para h.

Definir la función

tal que (integral a b f h) es el valor de dicha expresión. Por ejemplo, el cálculo de la integral de f(x) = x^3 entre 0 y 1, con paso 0.01, es

Otros ejemplos son

Nota: Definir la función también en Maxima. Por ejemplo,

Soluciones

Solución en Maxima

Nota: En Maxima esta definida la función integrate para calcular integrales definidas. Por ejemplo,

Particiones en sumas de cuadrados

Definir las funciones

tales que

  • (particionesCuadradas n) es la listas de conjuntos de cuadrados cuya suma es n. Por ejemplo,

  • (nParticionesCuadradas n) es el número de conjuntos de cuadrados cuya suma es n. Por ejemplo,

  • (graficaParticionesCuadradas n) dibuja la gráfica de la sucesión

Por ejemplo, con (graficaParticionesCuadradas 100) se obtiene

Particiones_en_sumas_de_cuadrados

Soluciones

Referencias

Sumas de potencias de 3 primos

Los primeros números de la forma p²+q³+r⁴, con p, q y r primos son

Definir la sucesión

cuyos elementos son los números que se pueden escribir de la forma p²+q³+r⁴, con p, q y r primos. Por ejemplo,

Soluciones

Múltiplos con ceros y unos

Se observa que todos los primeros números naturales tienen al menos un múltiplo no nulo que está formado solamente por ceros y unos. Por ejemplo, 1×10=10, 2×5=10, 3×37=111, 4×25=100, 5×2=10, 6×185=1110; 7×143=1001; 8X125=1000; 9×12345679=111111111.

Definir la función

tal que (multiplosCon1y0 n) es la lista de los múltiplos de n cuyos dígitos son 1 ó 0. Por ejemplo,

Comprobar con QuickCheck que todo entero positivo tiene algún múltiplo cuyos dígitos son 1 ó 0.

Soluciones