En este repositorio se encuentran los códigos con las soluciones de los ejercicios de programación funcional propuestos en el blog Exercitium (y la continuación de Exercitium en GitHub) desde el curso 2013-14 hasta la actualidad.
Los objetivos de esta recopilación son:
- Escribir todos los ejercicios como un proyecto con Stack para evitar los problemas que surgen entre las distintas versiones de las librerías que se usan.
- Escribir los tests de cada ejercicio (en el directorio test) de forma que se puedan comprobar con Hspec.
- 21 Iguales al siguiente.
- 22 Ordenación por el máximo.
- 23 La bandera tricolor.
- 24 Determinación de los elementos minimales.
- 25 Mastermind.
- 28 Primos consecutivos con media capicúa.
- 29 Anagramas.
- 30 Primos equidistantes.
- 01 Suma si todos los valores son justos.
- 02 Matriz de Toeplitz.
- 05 Máximos locales.
- 06 Lista cuadrada.
- 01 Suma de fila del triángulo de los impares.
- 02 Reiteración de suma de consecutivos.
- 03 Producto de los elementos de la diagonal principal.
- 04 Reconocimiento de potencias de 4.
- 07 Número de ocurrencias de elementos.
- 08 Exponente en la factorización.
- 09 Suma de múltiplos de 3 o de 5.
- 10 Ternas pitagóricas con suma dada.
- 11 Mayor órbita de la sucesión de Collatz.
- 14 Caminos en un triángulo.
- 15 Máxima suma de caminos en un triángulo.
- 16 Números amigos.
- 17 Sucesión de números amigos.
- 18 Suma de los números amigos menores que n.
- 21 Determinación de los elementos minimales.
- 22 Mastermind.
- 23 Primos consecutivos con media capicúa
- 24 Iguales al siguiente.
- 25 Ordenación por el máximo.
- 28 La bandera tricolor.
- 01 Anagramas.
- 02 Primos equidistantes.
- 03 Suma si todos los valores son justos.
- 04 Posiciones de las diagonales principales.
- 07 Diagonales principales de una matriz.
- 08 Matrices de Toeplitz.
- 09 Máximos locales.
- 10 Lista cuadrada.
- 11 Segmentos maximales de elementos consecutivos (vídeo).
- 14 Valor de un polinomio mediante vectores (vídeo).
- 15 Ramas de un árbol (vídeo)-
- 16 Alfabeto comenzado en un carácter (vídeo).
- 18 Ordenación de estructuras (vídeo).
- 21 Emparejamiento binario (vídeo).
- 22 Ampliación de columnas de una matriz (vídeo).
- 23 Regiones determinadas por n rectas del plano (vídeo).
- 24 Elemento más repetido de manera consecutiva (vídeo).
- 25 Número de pares de elementos adyacentes iguales (vídeo).
- 28 Mayor producto de las ramas de un árbol (vídeo).
- 29 Familias de números con algún dígito en común (vídeo).
- 01 Biparticiones de una lista (vídeo).
- 04 Trenzado de listas (vídeo).
- 06 Enumeración de árboles binarios (vídeo).
- 07 Elementos de una matriz con algún vecino menor (vídeo).
- 08 Reiteración de una función (vídeo).
- 11 Código de las alergias.
- 12 Índices de valores verdaderos.
- 14 Número de inversiones.
- 15 Sepación por posición.
- 18 Emparejamiento de árboles (vídeo)
- 20 Eliminación de las ocurrencias aisladas (vídeo).
- 22 Ordenada cíclicamente (vídeo).
- 27 Producto cartesiano de una familia de conjuntos (vídeo).
- 02 Clausura de un conjunto respecto de una función (vídeo).
- 05 Puntos en regiones rectangulares.
- 18 Sumas de 4 primos.
- 19 Parejas de números y divisores.
- 20 Sumas de divisores propios.
- 23 Densidades de números abundantes, perfectos y deficientes.
- 24 Matriz zigzagueante.
- 25 Numeración con múltiples bases.
- 26 El triángulo de Lloyd.
- 27 Polinomios cuadráticos generadores de primos.
- 30 Ordenación de los racionales.
- 31 Polinomios de Bell.
- 01 Término ausente en una progresión aritmética.
- 02 Suma de los elementos de las diagonales de las matrices espirales.
- 03 Descomposiciones con sumandos 1 o 2.
- 06 Diccionario de frecuencias.
- 07 Primos circulares.
- 08 Codificación de Gödel.
- 09 Representación matricial de relaciones binarias.
- 10 Distancia esperada entre dos puntos de un cuadrado unitario.
- 20 Menor número con una cantidad dada de divisores.
- 21 Cálculo aproximado de integrales definidas.
- 22 Cálculo de la suma 1*1! + 2*2! + 3*3! + … + n*n!.
- 23 Números para los que mcm(1,2,…n-1) = mcm(1,2,…,n).
- 24 Método de bisección para aproximar raíces de funciones.
- 27 La sucesión del reloj astronómico de Praga.
- 28 Codificación de Fibonacci.
- 29 Pandigitales primos.
- 30 Aproximación del número pi.
- 01 Números autodescriptivos.
- 05 Unión e intersección general de conjuntos.
- 06 Intersecciones parciales.
- 07 Mayor semiprimo menor que n.
- 08 Particiones en k subconjuntos.
- 11 Número de particiones en k subconjuntos.
- 12 Composición de relaciones binarias.
- 13 Transitividad de una relación.
- 14 Clausura transitiva de una relación binaria.
- 18 Primos con cubos.
- 19 Suma alterna de factoriales.
- 20 Potencias perfectas.
- 21 Sucesión de suma de cuadrados de los dígitos.
- 26 Números belgas.
- 09 Números de Pentanacci.
- 14 El teorema de Navidad de Fermat.
- 19 Números primos de Hilbert.
- 24 Factorizaciones de números de Hilbert.
- 29 Sumas de dos primos.
- 04 Representaciones de un número como suma de dos cuadrados.
- 09 La serie de Thue-Morse.
- 14 La sucesión de Thue-Morse.
- 19 Huecos maximales entre primos.
- 24 La función indicatriz de Euler.
- 29 Ceros finales del factorial.
- 04 Primos cubanos.
- 09 Cuadrado más cercano (vídeo).
- 14 Suma de cadenas.
- 19 Sistema factorádico de numeración.
- 24 Duplicación de cada elemento.
- 29 Suma de fila del triángulo de los impares.
- 04 Reiteración de suma de consecutivos.
- 09 Producto de los elementos de la diagonal principal.
- 14 Reconocimiento de potencias de 4.
- 19 Exponente en la factorización.
- 24 Mayor órbita de la sucesión de Collatz
- 29 Máximos locales (vídeo).
- 04 Caminos en un triángulo.
- 09 Máxima suma de caminos en un triángulo.
- 14 Números amigos.
- 19 Primos equidistantes.
- 24 Numeración de ternas de naturales.
- 29 Números triangulares con n cifras distintas (vídeos).
- 04 Posiciones de las diagonales principales.
- 09 Diagonales principales de una matriz.
- 14 Matrices de Toeplitz.
- 19 Diferencia simétrica.
- 24 Conjunto de primos relativos.
- 29 Descomposiciones triangulares.
- 04 Representación de Zeckendorf.
- 09 Números con todos sus dígitos primos.
- 14 Mínimo producto escalar.
- 19 Particiones de enteros positivos.
- 24 Reconocimiento de potencias de 2.
- 29 Conjunto de divisores.
- 01 Suma de múltiplos de 3 o de 5.
- 02 Ternas pitagóricas con suma dada.
- 03 Mayor órbita de la sucesión de Collatz.
- 04 Caminos en un triángulo.
- 10 Máxima suma de caminos en un triángulo.
- 11 Números amigos.
- 15 Sucesión de números amigos.
- 16 Suma de los números amigos menores que n.
- 17 Determinación de los elementos minimales.
- 18 Mastermind.
- 19 Primos consecutivos con media capicúa
- 21 Iguales al siguiente.
- 29 Ordenación por el máximo.
- 03 La bandera tricolor.
- 04 Posiciones de las diagonales principales.
- 06 Diagonales principales de una matriz.
- 10 Anagramas.
- 14 Primos equidistantes.
- 18 Matrices de Toeplitz.
- 19 Máximos locales.
- 20 Lista cuadrada.
En este enlace se encuentran los ejercicios del curso de introducción al la programación con Haskell y Python.