Alfabeto comenzando en un carácter

Definir la función

tal que (alfabetoDesde c) es el alfabeto, en minúscula, comenzando en el carácter c, si c es una letra minúscula y comenzando en ‘a’, en caso contrario. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

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

Ramas de un árbol

Los árboles se pueden representar mediante el siguiente tipo de datos

Por ejemplo, los árboles

se representan por

Definir la función

tal que (ramas a) es la lista de las ramas del árbol a. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

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

Valores de polinomios representados con vectores

Los polinomios se pueden representar mediante vectores usando la librería Data.Array. En primer lugar, se define el tipo de los polinomios (con coeficientes de tipo a) mediante

Como ejemplos, definimos el polinomio

que representa a 6 + 2x – 5x^2 + 7x^4 y el polinomio

que representa a 6.5 + 2x – 5.2x^2 + 7x^4

Definir la función

tal que (valor p b) es el valor del polinomio p en el punto b. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

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

Segmentos maximales de elementos consecutivos

Definir la función

tal que (segmentos xss) es la lista de los segmentos maximales de xss formados por elementos consecutivos. Por ejemplo,

Soluciones

[schedule expon=’2022-03-18′ expat=»06:00″]

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

[/schedule]

[schedule on=’2022-03-18′ at=»06:00″]

El código se encuentra en [GitHub](https://github.com/jaalonso/Exercitium/blob/main/src/Segmentos_consecutivos.hs).

La elaboración de las soluciones explica en el siguiente vídeo:


[/schedule]

Lista cuadrada

Definir la función

tal que (listaCuadrada n x xs) es una lista de n listas de longitud n formadas con los elementos de xs completada con x, si no xs no tiene suficientes elementos. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

La elaboración de la solución se muestra en el siguiente vídeo:

Máximos locales

Un máximo local de una lista es un elemento de la lista que es mayor que su predecesor y que su sucesor en la lista. Por ejemplo, 5 es un máximo local de [3,2,5,3,7,7,1,6,2] ya que es mayor que 2 (su predecesor) y que 3 (su sucesor).

Definir la función

tal que (maximosLocales xs) es la lista de los máximos locales de la lista xs. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

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

Matrices de Toepliz

Una matriz de Toeplitz es una matriz cuadrada que es constante a lo largo de las diagonales paralelas a la diagonal principal. Por ejemplo,

la primera es una matriz de Toeplitz y la segunda no lo es.

Las anteriores matrices se pueden definir por

Definir la función

tal que (esToeplitz p) se verifica si la matriz p es de Toeplitz. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Diagonales principales de una matriz

La lista de las diagonales principales de la matriz

es

Definir la función

tal que (diagonalesPrincipales p) es la lista de las diagonales principales de p. Por ejemplo,

Soluciones

El código se encuentra en GitHub

Posiciones de las diagonales principales

Las posiciones de una matriz con 3 filas y 4 columnas son

La posiciones de sus 6 diagonales principales son

Definir la función

tal que (posicionesdiagonalesprincipales m n) es la lista de las posiciones de las diagonales principales de una matriz con m filas y n columnas. Por ejemplo,

Soluciones

El código se encuentra en GitHub

Suma si todos los valores son justos

Definir la función

tal que (sumaSiTodosJustos xs) es justo la suma de todos los elementos de xs si todos son justos (es decir, si Nothing no pertenece a xs) y Nothing en caso contrario. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Primos equidistantes

Definir la función

tal que (primosEquidistantes k) es la lista de los pares de primos cuya diferencia es k. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Anagramas

Una palabra es una anagrama de otra si se puede obtener permutando sus letras. Por ejemplo, «mora» y «roma» son anagramas de «amor».

Definir la función

tal que (anagramas x ys) es la lista de los elementos de ys que son anagramas de x. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

La bandera tricolor

El problema de la bandera tricolor consiste en lo siguiente: Dada un lista de objetos xs que pueden ser rojos, amarillos o morados, se pide devolver una lista ys que contiene los elementos de xs, primero los rojos, luego los amarillos y por último los morados.

Definir el tipo de dato Color para representar los colores con los constructores R, A y M correspondientes al rojo, azul y morado y la función

tal que (banderaTricolor xs) es la bandera tricolor formada con los elementos de xs. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Ordenación por el máximo

Definir la función

tal que (ordenadosPorMaximo xss) es la lista de los elementos de xss ordenada por sus máximos (se supone que los elementos de xss son listas no vacía) y cuando tiene el mismo máximo se conserva el orden original. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Iguales al siguiente

Definir la función

tal que (igualesAlSiguiente xs) es la lista de los elementos de xs que son iguales a su siguiente. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Primos consecutivos con media capicúa

Definir la lista

formada por las ternas (x,y,z) tales que x e y son primos consecutivos cuya media, z, es capicúa. Por ejemplo,

Soluciones

El código se encuentra en GitHub.

Mastermind

El Mastermind es un juego que consiste en deducir un código numérico formado por una lista de números. Cada vez que se empieza una partida, el programa debe elegir un código, que será lo que el jugador debe adivinar en la menor cantidad de intentos posibles. Cada intento consiste en una propuesta de un código posible que propone el jugador, y una respuesta del programa. Las respuestas le darán pistas al jugador para que pueda deducir el código.

Estas pistas indican lo cerca que estuvo el número propuesto de solución a través de dos valores: la cantidad de aciertos es la cantidad de dígitos que propuso el jugador que también están en el código en la misma posición. La cantidad de coincidencias es la cantidad de dígitos que propuso el jugador que también están en el código pero en una posición distinta.

Por ejemplo, si el código que eligió el programa es el [2,6,0,7] el jugador propone el [1,4,0,6], el programa le debe responder acierto (el 0, que está en el código original en el mismo lugar, tercero), y una coincidencia (el 6, que también está en el original, pero en la segunda posición, no en el cuarto como fue propuesto). Si el jugador hubiera propuesto el [3,5,9,1], habría obtenido como respuesta ningún acierto y ninguna coincidencia, ya que no hay números en común con el código original. Si se obtienen cuatro aciertos es porque el jugador adivinó el código y ganó el juego.

Definir la función

tal que (mastermind xs ys) es el par formado por los números de aciertos y de coincidencias entre xs e ys. Por ejemplo,

Soluciones