PFH: La semana en Exercitium (11 de noviembre de 2022)

Esta semana he publicado en Exercitium las soluciones de los siguientes problemas:

A continuación se muestran las soluciones.

1. Números de Lychrel

Un número de Lychrel es un número 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 esta serie de ejercicios vamos a buscar el primer número de Lychrel.

Ejercicio 1. Definir la función

tal que esCapicua x se verifica si x es capicúa. Por ejemplo,

Ejercicio 2. Definir la función

tal que inverso x es el número obtenido escribiendo las cifras de x en orden inverso. Por ejemplo,

Ejercicio 3. Definir la función

tal que siguiente x es el número obtenido sumándole a x su inverso. Por ejemplo,

Ejercicio 4. Definir la función

tal que busquedaDeCapicua x es la lista de los números tal que el primero es x, el segundo es el siguiente de x y así sucesivamente hasta que se alcanza un capicúa. Por ejemplo,

Ejercicio 5. Definir la función

tal que capicuaFinal x es la capicúa con la que termina la búsqueda de capicúa a partir de x. Por ejemplo,

Ejercicio 6. Definir la función

tal que orden x es el número de veces que se repite el proceso de calcular el inverso a partir de x hasta alcanzar un número capicúa. Por ejemplo,

Ejercicio 7. Definir la función

tal que ordenMayor x n se verifica si el orden de x es mayor o igual que n. Dar la definición sin necesidad de evaluar el orden de x. Por ejemplo,

Ejercicio 8. Definir la función

tal que ordenEntre m n es la lista de los elementos cuyo orden esmayor o igual que m y menor que n. Por ejemplo,

Ejercicio 9. Definir la función

tal que menorDeOrdenMayor n es el menor elemento cuyo orden es mayor que n. Por ejemplo,

Ejercicio 10. Definir la función

tal que menoresdDeOrdenMayor m es la lista de los pares (n,x) tales que n es un número entre 1 y m y x es el menor elemento de orden mayor que n. Por ejemplo,

Ejercicio 11. A la vista de los resultados de menoresdDeOrdenMayor 5 conjeturar sobre la última cifra de menorDeOrdenMayor.

Ejercicio 12. Decidir con QuickCheck la conjetura.

Ejercicio 13. Calcular menoresdDeOrdenMayor 50

Ejercicio 14. A la vista de menoresdDeOrdenMayor 50, conjeturar el orden de 196.

Ejercicio 15. Comprobar con QuickCheck la conjetura sobre el orden de 196.

1.1. Soluciones en Haskell

1.2. Soluciones en Python

2. Suma de los dígitos de una cadena

Definir la función

tal que sumaDigitos xs es la suma de los dígitos de la cadena xs. Por ejemplo,

2.1. Soluciones en Haskell

2.2. Soluciones en Python

3. Poner en mayúscula la primera letra y las restantes en minúsculas

Definir la función

tal que mayusculaInicial xs es la palabra xs con la letra inicial en mayúscula y las restantes en minúsculas. Por ejemplo,

3.1. Soluciones en Haskell

3.2. Soluciones en Python

4. Mayúsculas iniciales

Se consideran las siguientes reglas de mayúsculas iniciales para los títulos:

  • la primera palabra comienza en mayúscula y
  • todas las palabras que tienen 4 letras como mínimo empiezan con mayúsculas

Definir la función

tal que titulo ps es la lista de las palabras de ps con las reglas de mayúsculas iniciales de los títulos. Por ejemplo,

4.1. Soluciones en Haskell

4.2. Soluciones en Python

5. Posiciones de un carácter en una cadena

Definir la función

tal que posiciones x ys es la lista de la posiciones del carácter x en la cadena ys. Por ejemplo,

5.1. Soluciones en Haskell

5.2. Soluciones en Python