Suma de conjuntos de polinomios

Los conjuntos de polinomios se pueden representar por listas de listas de la misma longitud. Por ejemplo, los polinomios 3x²+5x+9, 10x³+9 y 8x³+5x²+x-1 se pueden representar por las listas [0,3,5,9], [10,0,0,9] y [8,5,1,-1].

Definir la función

tal que (sumaPolinomios ps) es la suma de los polinomios ps. Por ejemplo,

Soluciones

Mínimo número de cambios para igualar una lista

Definir la función

tal que (nMinimoCambios xs) es el menor número de elementos de xs que hay que cambiar para que todos sean iguales. Por ejemplo,

En el primer ejemplo, los elementos que hay que cambiar son 5, 7, 9 y 6.

Soluciones

Segmentos de longitud dada

Definir la función

tal que (segmentos n xs) es la lista de los segmentos de longitud n de la lista xs. Por ejemplo,

Soluciones

Menor número triangular con más de n divisores

La sucesión de los números triangulares se obtiene sumando los números naturales.

Así, el 7º número triangular es

Los primeros 10 números triangulares son

Los divisores de los primeros 7 números triangulares son:

Como se puede observar, 28 es el menor número triangular con más de 5 divisores.

Definir la función

tal que (menorTriangularConAlMenosNDivisores n) es el menor número triangular que tiene al menos n divisores. Por ejemplo,

Soluciones

Siguiente elemento en una lista

Definir la función

tal que (siguiente x ys) es justo el elemento siguiente a la primera ocurrencia de x en ys o Nothing si x no pertenece a ys. Por ejemplo,

Soluciones

Posición del primer falso en un vector

Excercitium

Definir la función

tal que (posicion v) es la menor posición del vector de booleanos v cuyo valor es falso y es Nothing si todos los valores son verdaderos. Por ejemplo,

Soluciones

Números naturales separados por ceros

Enunciado

Definir la sucesión

cuyos elementos son los números naturales separados por 0. Por ejemplo,

Comprobar con QuickCheck que el n-ésimo término de la sucesión es n*(1+(-1)^n)/4.

Nota. En la comprobación usar

Soluciones

Enumeración de los números enteros

Exercitium

Definir la sucesión

tal que sus elementos son los números enteros comenzando en el 0 e intercalando los positivos y los negativos. Por ejemplo,

Comprobar con QuickCheck que el n-ésimo término de la sucesión es (1-(2n+1)(-1)^n)/4.

Nota. En la comprobación usar

Soluciones

Suma de una lista de vectores

Definir la función

tal que (sumaVec xss) es la suma de los vectores de xss. Por ejemplo,

Soluciones

Conjuntos de puntos enteros en regiones rectangulares

Los puntos de una cuadrícula se puede representar mediante pares de números enteros

y las regiones rectangulares mediante el siguiente tipo de dato

donde

  • (Rectangulo p1 p2) es la región formada por un rectángulo cuyo vértice superior izquierdo es p1 y su vértice inferior derecho es p2.
  • (Union r1 r2) es la región cuyos puntos pertenecen a alguna de las regiones r1 y r2.
  • (Diferencia r1 r2) es la región cuyos puntos pertenecen a la región r1 pero no pertenecen a la r2.

Definir la función

tal que (puntos r) es la lista de puntos de la región r. Por ejemplo, usando las regiones definidas por

se tiene

Comprobar con QuickCheck, usando la función enRegion definida en el ejercicio [Puntos en regiones rectangulares](Puntos en regiones rectangulares) que (enRegion p r) es equivalente a (p elem puntos r).

Nota: Escribir las soluciones usando la siguiente plantilla que contiene un generador de regiones

Soluciones

Listas disjuntas

Definir la función

tal que (disjuntas xs ys) se verifica si las listas ordenadas crecientemente xs e ys son disjuntas. Por ejemplo,

Soluciones

Dos cuadrados encajados

Enunciado

Definir la función

que dibuje dos cuadrados encajados como se muestra en la siguiente figura
2CuadradosEncajados

Nota: Escribir las soluciones usando la siguiente plantilla

Soluciones

Período de una lista

El período de una lista xs es la lista más corta ys tal que xs se puede obtener concatenando varias veces la lista ys. Por ejemplo, el período «abababab» es «ab» ya que «abababab» se obtiene repitiendo tres veces la lista «ab».

Definir la función

tal que (periodo xs) es el período de xs. Por ejemplo,

Soluciones

La función suelo

La función suelo asigna a cada número real el número entero más próximo por defecto; es decir, el mayor número entero igual o menor que ese número real. Por ejemplo, al -2.4 le asigna el -3 y al 1.7 el 1.

Haskell tiene una implementación de la función suelo llamada floor. El objetivo de este ejercicio es redefinir dicha función; es decir, definir (sin usar floor, round ni ceiling) la función

tal que (suelo x) es el suelo de x. Por ejemplo,

Comprobar con QuickCheck que las funciones suelo y floor son equivalentes.

Soluciones

Elementos más frecuentes

Definir la función

tal que (masFrecuentes n xs) es la lista de los pares formados por los elementos de xs que aparecen más veces junto con el número de veces que aparecen. Por ejemplo,

Soluciones

Desemparejamiento de listas

Definir la función

tal que (desemparejada ps) es el par de lista (xs,ys) tal que al emparejar (con zip) xs e ys devuelve ps. Por ejemplo,

Comprobar con QuickCheck que

  • desemparejada es equivalente a la función predefinida unzip.
  • si el valor de (desemparejada ps) es (xs,ys), entonces (zip xs ys) es igual a ps.

Soluciones

Representaciones de matrices

Enunciado

Soluciones

Permutación de elementos consecutivos

Soluciones

Números que sumados a su siguiente primo dan primos

Introducción

La Enciclopedia electrónica de sucesiones de enteros (OEIS por sus siglas en inglés, de On-Line Encyclopedia of Integer Sequences) es una base de datos que registra sucesiones de números enteros. Está disponible libremente en Internet, en la dirección http://oeis.org.

La semana pasada Antonio Roldán añadió una nueva sucesión a la OEIS, la A249624 que sirve de base para el problema de hoy.

Enunciado

Soluciones

Sin consecutivos repetidos

Enunciado

Soluciones

Búsqueda en lista de listas de pares

Enunciado

Soluciones

Llanuras de longitud dada

Enunciado

Soluciones

Referencias

Esté ejercicio está basado en el problema Llanura de números iguales con longitud igual a n propuesto Solveet!

Evaluación de árboles de expresiones aritméticas

Enunciado

Soluciones

Aplicaciones alternativas

Enunciado

Soluciones

[schedule expon=’2014-12-03′ expat=»06:00″]

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

[/schedule]

[schedule on=’2014-12-03′ at=»06:00″]

[/schedule]

Repetición cíclica

Enunciado

Soluciones

Elemento común en la menor posición

Enunciado

Soluciones

[schedule expon=’2014-12-01′ expat=»06:00″]

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

[/schedule]

[schedule on=’2014-12-01′ at=»06:00″]

[/schedule]

Pequeño test de inteligencia

Enunciado

Soluciones

[schedule expon=’2014-11-25′ expat=»06:00″]

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

[/schedule]

[schedule on=’2014-11-25′ at=»06:00″]

[/schedule]

Repetición de elementos

Enunciado

Soluciones

Precio total

Enunciado

Soluciones

Extensión de un fichero

Enunciado

Soluciones