En este repositorio se encuentran los códigos con las soluciones de los ejercicios de programación funcional propuestos en el blog Exercitium desde el curso 2013-14 hasta la actualidad. En este tiempo se han propuesto 1.081 ejercicios que han recibido 4.913 soluciones.
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.
- Número de ocurrencias de elementos.
- Suma de múltiplos de 3 o de 5.
- Ternas pitagóricas con suma dada.
- Sucesión de números amigos.
- Suma de los números amigos menores que n.
- Determinación de los elementos minimales.
- Mastermind.
- Primos consecutivos con media capicúa
- Iguales al siguiente.
- Ordenación por el máximo.
- La bandera tricolor.
- Anagramas.
- Suma si todos los valores son justos.
- Máximos locales (vídeo).
- Lista cuadrada (vídeo)-
- Segmentos maximales de elementos consecutivos (vídeo).
- Valor de un polinomio mediante vectores (vídeo).
- Ramas de un árbol (vídeo)-
- Alfabeto comenzado en un carácter (vídeo).
- Ordenación de estructuras (vídeo).
- Emparejamiento binario (vídeo).
- Ampliación de columnas de una matriz (vídeo).
- Regiones determinadas por n rectas del plano (vídeo).
- Elemento más repetido de manera consecutiva (vídeo).
- Número de pares de elementos adyacentes iguales (vídeo).
- Mayor producto de las ramas de un árbol (vídeo).
- Familias de números con algún dígito en común (vídeo).
- Biparticiones de una lista (vídeo).
- Trenzado de listas (vídeo).
- Enumeración de árboles binarios (vídeo).
- Elementos de una matriz con algún vecino menor (vídeo).
- Reiteración de una función (vídeo).
- Código de las alergias.
- Índices de valores verdaderos.
- Número de inversiones.
- Sepación por posición.
- Emparejamiento de árboles (vídeo)
- Eliminación de las ocurrencias aisladas (vídeo).
- Ordenada cíclicamente (vídeo).
- Producto cartesiano de una familia de conjuntos (vídeo).
- Clausura de un conjunto respecto de una función (vídeo).
- Puntos en regiones rectangulares.
- Sumas de 4 primos.
- Parejas de números y divisores.
- Sumas de divisores propios.
- Densidades de números abundantes, perfectos y deficientes.
- Matriz zigzagueante.
- Numeración con múltiples bases.
- El triángulo de Lloyd.
- Polinomios cuadráticos generadores de primos.
- Ordenación de los racionales.
- Polinomios de Bell.
- Término ausente en una progresión aritmética.
- Suma de los elementos de las diagonales de las matrices espirales.
- Descomposiciones con sumandos 1 o 2.
- Diccionario de frecuencias.
- Primos circulares.
- Codificación de Gödel.
- Representación matricial de relaciones binarias.
- Distancia esperada entre dos puntos de un cuadrado unitario.
- Menor número con una cantidad dada de divisores.
- Cálculo aproximado de integrales definidas.
- Cálculo de la suma 1*1! + 2*2! + 3*3! + … + n*n!.
- Números para los que mcm(1,2,…n-1) = mcm(1,2,…,n).
- Método de bisección para aproximar raíces de funciones.
- La sucesión del reloj astronómico de Praga.
- Codificación de Fibonacci.
- Pandigitales primos.
- Aproximación del número pi.
- Números autodescriptivos.
- Unión e intersección general de conjuntos.
- Intersecciones parciales.
- Mayor semiprimo menor que n.
- Particiones en k subconjuntos.
- Número de particiones en k subconjuntos.
- Composición de relaciones binarias.
- Transitividad de una relación.
- Clausura transitiva de una relación binaria.
- Suma alterna de factoriales.
- Potencias perfectas.
- Primos con cubos.
- Sucesión de suma de cuadrados de los dígitos.
- Números belgas.
- Número de representaciones de n como suma de dos cuadrados.
- Media aritmética de tres números
- Suma de monedas.
- Volumen de la esfera.
- Área de la corona circular.
- Último dígito.
- Máximo de tres números.
- El primero al final.
- Los primeros al final.
- Rango de una lista.
- Reconocimiento de palíndromos.
- Interior de una lista.
- Elementos finales.
- Segmento de una lista.
- Primeros y últimos elementos.
- Elemento mediano.
- Tres iguales.
- Tres diferentes.
- División segura.
- Disyunción excluyente.
- Mayor rectángulo.
- Intercambio de componentes de un par.
- Distancia entre dos puntos.
- Permutación cíclica.
- Mayor número con dos dígitos dados.
- Número de raíces de la ecuación de segundo grado.
- Raíces de la ecuación de segundo grado.
- Fórmula de Herón para el área de un triángulo.
- Intersección de intervalos cerrados.
- Números racionales.
- Reconocimiento de subconjunto.
- Igualdad de conjuntos.
- Unión conjuntista de listas.
- Intersección conjuntista de listas.
- Diferencia conjuntista de listas.
- Divisores de un número.
- Divisores primos.
- Números libres de cuadrados.
- Suma de los primeros números naturales.
- Suma de los cuadrados de los primeros números naturales.
- Suma de cuadrados menos cuadrado de la suma.
- Triángulo aritmético.
- Suma de divisores.
- Números perfectos.
- Números abundantes.
- Números abundantes menores o iguales que n.
- Todos los abundantes hasta n son pares.
- Números abundantes impares.
- Suma de múltiplos de 3 ó 5.
- Puntos dentro del círculo.
- Aproximación del número e.
- Aproximación al límite de sen(x)/x cuando x tiende a cero.
- Cálculo del número π mediante la fórmula de Leibniz.
- Ternas pitagóricas.
- Ternas pitagóricas con suma dada.
- Producto escalar.
- Representación densa de polinomios.
- Base de datos de actividades.
- Potencia entera.
- Algoritmo de Euclides del mcd.
- Dígitos de un número.
- Suma de los digitos de un número.
- Número a partir de sus dígitos.
- Exponente_de la mayor potencia de x que divide a y.
- Producto cartesiano de dos conjuntos.
- Subconjuntos_de_un_conjunto.
- El algoritmo de Luhn.
- Números de Lychrel
- Suma de los dígitos de una cadena.
- Poner en mayúscula la primera letra y las restantes en minúsculas.
- Mayúsculas iniciales.
- Posiciones de un carácter en una cadena.
- Reconocimiento de subcadenas.
- Segmentos cuyos elementos cumplen una propiedad.
- Elementos consecutivos relacionados.
- Agrupación de elementos por posición.
- Concatenación de una lista de listas.
- Aplica según propiedad.
- Máximo de una lista.
- Movimientos en el plano.
- El tipo de figuras geométricas.
- El tipo de los números naturales.
- El tipo de las listas.
- El tipo de los árboles binarios con valores en los nodos y en las hojas.
- Pertenencia de un elemento a un árbol.
- Aplanamiento de un árbol.
- Número de hojas de un árbol binario.
- Profundidad de un árbol binario.
- Recorrido de árboles binarios.
- Imagen especular de un árbol binario.
- Subárbol de profundidad dada.
- Árbol de profundidad n con nodos iguales.
- Árboles con igual estructura.
- Existencia de elementos del árbol que verifican una propiedad.
- Elementos del nivel k de un árbol.
- El tipo de los árboles binarios con valores en las hojas.
- El tipo de los árboles binarios con valores en los nodos.
- Árbol de factorización.
- Valor de un árbol booleano.
- El tipo de las fórmulas proposicionales.
- El tipo de las expresiones aritméticas.
- El tipo de las expresiones aritméticas básicas.
- El tipo de expresiones aritméticas con una variable.
- El tipo de las expresiones aritméticas con variables.
- Valor de expresiones aritméticas generales.
- Valor de una expresión vectorial.
- El tipo abstracto de datos de las pilas.
- El tipo de datos de las pilas mediante listas.
- El tipo de datos de las pilas mediante sucesiones.
- TAD de las pilas: Transformaciones entre pilas y listas.
- TAD de las pilas: Filtrado de pilas según una propiedad.
- TAD de las pilas: Aplicación de una función a los elementos de una pila.
- TAD de las pilas: Pertenencia a una pila.
- TAD de las pilas: Inclusión de pilas.
- TAD de las pilas: Reconocimiento de prefijos de pilas.
- TAD de las pilas: Reconocimiento de subpilas.
- TAD de las pilas: Reconocimiento de ordenación de pilas.
- TAD de las pilas: Ordenación de pilas por inserción.
- TAD de las pilas: Eliminación de repeticiones en una pila.
- TAD de las pilas: Máximo elemento de una pila.
- El tipo abstracto de datos de las colas.
- El tipo de datos de las colas mediante listas.
- El tipo de datos de las colas mediante sucesiones.
- El tipo de datos de las colas mediante dos listas.
- TAD de las colas: Transformaciones entre colas y listas.
- TAD de las colas: Último elemento.
- TAD de las colas: Longitud de una cola.
- TAD de las colas: Todos los elementos verifican una propiedad.
- TAD de las colas: Alguno de los elementos verifican una propiedad.
- TAD de las colas: Extensión de colas.
- TAD de las colas: Intercalado de dos colas.
- TAD de las colas: Agrupación de colas.
- TAD de las colas: Pertenencia a una cola.
- TAD de las colas: Inclusión de colas.
- TAD de las colas: Reconocimiento de prefijos de colas.
- TAD de las colas: Reconocimiento de subcolas.
- TAD de las colas: Reconocimiento de ordenación de colas.
- TAD de las colas: Máximo elemento de una cola.
- El tipo abstracto de datos de los conjuntos.
- El tipo de datos de los conjuntos mediante listas no ordenadas con duplicados.
- El tipo de datos de los conjuntos mediante listas no ordenadas sin duplicados.
- El tipo de datos de los conjuntos mediante listas ordenadas sin duplicados.
- El tipo de datos de los conjuntos mediante librería.
- TAD de los conjuntos: Transformaciones entre conjuntos y listas.
- TAD de los conjuntos: Reconocimiento de subconjunto.
- TAD de los conjuntos: Reconocimiento de_subconjunto propio.
- TAD de los conjuntos: Conjunto unitario.
- TAD de los conjuntos: Número de elementos de un conjunto.
- TAD de los conjuntos: Unión de dos conjuntos.
- TAD de los conjuntos: Unión de varios conjuntos.
- TAD de los conjuntos: Intersección de dos conjuntos.
- TAD de los conjuntos: Intersección de varios conjuntos.
- TAD de los conjuntos: Conjuntos disjuntos.
- TAD de los conjuntos: Diferencia de conjuntos.
- TAD de los conjuntos: Diferencia simétrica.
- TAD de los conjuntos: Subconjunto determinado por una propiedad.
- TAD de los conjuntos: Partición de un conjunto según una propiedad.
- TAD de los conjuntos: Partición según un número.
- TAD de los conjuntos: Aplicación de una función a los elementos de un conjunto.
- TAD de los conjuntos: Todos los elementos verifican una propiedad.
- TAD de los conjuntos: Algunos elementos verifican una propiedad.
- TAD de los conjuntos: TAD_Producto_cartesiano.
- Relaciones binarias.
- Universo y grafo de una relación binaria.
- Relaciones reflexivas.
- Relaciones simétricas.
- Composición de relaciones binarias.
- Reconocimiento de subconjunto.
- Relaciones transitivas.
- Relaciones de equivalencia.
- Relaciones irreflexivas.
- Relaciones antisimétricas.
- Relaciones totales.
- Clausura reflexiva.
- Clausura simétrica.
- Clausura transitiva.
- El tipo abstracto de datos de los polinomios.
- El TAD de los polinomios mediante tipos algebraicos.
- El TAD de los polinomios mediante listas densas.
- El TAD de los polinomios mediante listas dispersas.
- TAD de los polinomios: Transformaciones entre las representaciones dispersa y densa.
- TAD de los polinomios: Transformaciones entre polinomios y listas dispersas.
- TAD de los polinomios: Coeficiente del término de grado k.
- TAD de los polinomios: Transformaciones entre polinomios y listas densas.
- TAD de los polinomios: Construcción de términos.
- TAD de los polinomios: Término líder de un polinomio.
- TAD de los polinomios: Suma de polinomios.
- TAD de los polinomios: Producto de polinomios.
- TAD de los polinomios: Valor de un polinomio en un punto.
- TAD de los polinomios: Comprobación de raíces de polinomios
- TAD de los polinomios: Derivada de un polinomio.
- TAD de los polinomios: Resta de polinomios.
- TAD de los polinomios: Potencia de un polinomio.
- TAD de los polinomios: Integral de un polinomio.
- TAD de los polinomios: Integral definida de un polinomio.
- TAD de los polinomios: Multiplicación de un polinomio por un número.
- TAD de los polinomios: División de polinomios.
- TAD de los polinomios: Divisibilidad de polinomios.
- TAD de los polinomios: Método de Horner del valor de un polinomio.
- TAD de los polinomios: Término independiente de un polinomio.
- TAD de los polinomios: Regla de Ruffini con representación densa.
- TAD de los polinomios: Regla de Ruffini.
- TAD de los polinomios: Reconocimiento de raíces por la regla de Ruffini.
- TAD de los polinomios: Raíces enteras de un polinomio.
- TAD de los polinomios: Factorización de un polinomio.
- El tipo abstracto de datos de los grafos.
- El TAD de los grafos mediante listas de adyacencia.
- TAD de los grafos: Grafos_completos.
- TAD de los grafos: Grafos ciclos.
- TAD de los grafos: Número de vértices.
- TAD de los grafos: Incidentes de un vértice.
- TAD de los grafos: Contiguos de un vértice.
- TAD de los grafos: Lazos de un grafo.
- TAD de los grafos: Número de aristas de un grafo.
- TAD de los grafos: Grados positivos y negativos.
- TAD de los grafos: Generadores de grafos arbitrarios.
- TAD de los grafos: Propiedades de grados positivos y negativos.
- TAD de los grafos: Grado de un vértice.
- TAD de los grafos: Lema del apretón de manos.
- TAD de los grafos: Grafos regulares.
- TAD de los grafos: Grafos k-regulares.
- TAD de los grafos: Recorridos en un grafo completo.
- TAD de los grafos: Anchura de un grafo.
- TAD de los grafos: Recorrido en profundidad.
- TAD de los grafos: Recorrido en anchura.
- TAD de los grafos: Grafos conexos.
- TAD de los grafos: Coloreado correcto de un mapa.
- TAD de los grafos: Nodos aislados de un grafo.
- TAD de los grafos: Nodos conectados en un grafo.
- TAD de los grafos: Algoritmo de Kruskal.
- TAD de los grafos: Algoritmo de Prim.
- Búsqueda en espacios de estados por profundidad.
- El problema de las n reinas (mediante búsqueda en espacios de estados por profundidad).
- Búsqueda en espacios de estados por anchura.
- El problema de las n reinas (mediante búsqueda en espacios de estados por anchura).
- El problema de la mochila (mediante espacio de estados).
- El tipo abstracto de datos de las colas de prioridad.
- El tipo de datos de las colas de prioridad mediante listas.
- Búsqueda por primero el mejor.
- El problema del 8 puzzle.
- Búsqueda en escalada.
- El problema del cambio de monedas por escalada.
- El algoritmo de Prim del árbol de expansión mínimo por escalada.
- El problema del granjero mediante búsqueda en espacio de estado.
- El problema de las fichas mediante búsqueda en espacio de estado.
- El problema del calendario mediante búsqueda en espacio de estado.
- El problema del dominó.
- Problema de suma cero.
- Problema de las jarras.
- La función de Fibonacci por programación dinámica.
- Coeficientes binomiales.
- Longitud de la subsecuencia común máxima.
- Subsecuencia común máxima.
- La distancia Levenshtein (con programación dinámica).
- Caminos en una retícula (con programación dinámica).
- Caminos en una matriz (con programación dinámica).
- Máxima suma de los caminos en una matriz.
- Camino de máxima suma en una matriz.
- Método de Herón para calcular la raíz cuadrada.
- Método de Newton para calcular raíces.
- Funciones inversas por el método de Newton.
- Límites de sucesiones.
- Método de bisección para calcular ceros de una función.
- Raíces enteras.
- Integración por el método de los rectángulos.
- Algoritmo de bajada para resolver un sistema triangular inferior.
- Números de Pentanacci.
- El teorema de Navidad de Fermat.
- Números primos de Hilbert.
- Factorizaciones de números de Hilbert.
- Sumas de dos primos.
- Representaciones de un número como suma de dos cuadrados.
- La serie de Thue-Morse.
- La sucesión de Thue-Morse.
- Huecos maximales entre primos.
- La función indicatriz de Euler.
- Ceros finales del factorial.
- Primos cubanos.
- Cuadrado más cercano (vídeo).
- Suma de cadenas.
- Sistema factorádico de numeración.
- Duplicación de cada elemento.
- Suma de fila del triángulo de los impares.
- Reiteración de suma de consecutivos.
- Producto de los elementos de la diagonal principal.
- Reconocimiento de potencias de 4.
- Exponente en la factorización.
- Mayor órbita de la sucesión de Collatz
- Máximos locales (vídeo).
- Caminos en un triángulo.
- Máxima suma de caminos en un triángulo.
- Números amigos.
- Primos equidistantes.
- Numeración de ternas de naturales.
- Números triangulares con n cifras distintas (vídeos).
- Posiciones de las diagonales principales.
- Diagonales principales de una matriz.
- Matrices de Toeplitz.
- Diferencia simétrica.
- Conjunto de primos relativos.
- Descomposiciones triangulares.