Ordenada cíclicamente

Se dice que una sucesión x(1), …, x(n) está ordenada cíclicamente si existe un índice i tal que la sucesión

está ordenada crecientemente de forma estricta.

Definir la función

tal que (ordenadaCiclicamente xs) es el índice a partir del cual está ordenada, si la lista está ordenado cíclicamente y Nothing en caso contrario. Por ejemplo,

Nota: Se supone que el argumento es una lista no vacía sin elementos repetidos.

Soluciones

El código se encuentra en GitHub.

La elaboración de las soluciones se describe en el siguiente vídeo

Nuevas soluciones

  • En los comentarios se pueden escribir nuevas soluciones.
  • El código se debe escribir entre una línea con <pre lang="haskell"> y otra con </pre>

Biparticiones de una lista

Definir la función

tal que (biparticiones xs) es la lista de pares formados por un prefijo de xs y el resto de xs. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

La elaboración de las soluciones se describe en el siguiente vídeo

Nuevas soluciones

  • En los comentarios se pueden escribir nuevas soluciones.
  • El código se debe escribir entre una línea con <pre lang="haskell"> y otra con </pre>

El 2019 es un número de la suerte

Un número de la suerte es un número natural que se genera por una criba, similar a la criba de Eratóstenes, como se indica a continuación:

Se comienza con la lista de los números enteros a partir de 1:

Se eliminan los números de dos en dos

Como el segundo número que ha quedado es 3, se eliminan los números restantes de tres en tres:

Como el tercer número que ha quedado es 7, se eliminan los números restantes de siete en siete:

Este procedimiento se repite indefinidamente y los supervivientes son los números de la suerte:

Definir las funciones

tales que

  • numerosDeLaSuerte es la sucesión de los números de la suerte. Por ejemplo,

  • (esNumeroDeLaSuerte n) que se verifica si n es un número de la suerte. Por ejemplo,

Soluciones

Pensamiento

Ya es sólo brocal el pozo;
púlpito será mañana;
pasado mañana, trono.

Antonio Machado

Mayor número obtenido intercambiando dos dígitos

Definir la función

tal que (maximoIntercambio x) es el máximo número que se puede obtener intercambiando dos dígitos de x. Por ejemplo,

Soluciones

Árbol de subconjuntos

Definir las siguientes funciones

tales que

  • (arbolSubconjuntos xs) es el árbol de los subconjuntos de xs. Por ejemplo.

  • (nNodosArbolSubconjuntos xs) es el número de nodos del árbol de xs. Por ejemplo

  • (sumaNNodos n) es la suma del número de nodos de los árboles de los subconjuntos de [1..k] para 1 <= k <= n. Por ejemplo,

Soluciones