Este repositorio contiene las soluciones de los problemas de Exercitium con Python.
En principio, los ejercicios son de un curso de introducción a la programación con Haskell y con Python. En el blog, para cada problema, se publican distintas soluciones tanto en Haskell como en Python para poder compararlas.
Notas:
- Los ejemplos se puede verificar con poetry y pytest:
poetry run pytest
- Los tipos se pueden verificar con mypy. Por ejemplo,
src> mypy media_aritmetica_de_tres_numeros.py Success: no issues found in 1 source file src> mypy . Success: no issues found in 341 source files
- Las importaciones se pueden ordenar con
src> isort .
- 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.
- Suma elementos consecutivos.
- Representación densa de polinomios.
- Base de datos de actividades.
- Potencia entera.
- Algoritmo de Euclides del mcd.
- Dígitos 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 las expresiones aritméticas con una variable.
- El tipo de las expresiones aritméticas con variables.
- Máximos valores de una expresión aritmética.
- 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 deque.
- TAD de las pilas: Transformación 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 dos listas.
- El tipo de datos de las colas mediante deque.
- 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.
- Reconocimiento de subconjunto.
- Composición de relaciones binarias.
- 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 por profundidad en espacios de estados).
- 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 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 estados.
- El problema del calendario mediante búsqueda en espacio de estados.
- El problema del dominó mediante búsqueda en espacio de estados.
- Problema de suma cero mediante búsqueda en espacio de estados.
- Problema de las jarras mediante búsqueda en espacio de estados.
- 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.
- 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.
- 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.
- 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.
- Posiciones de las diagonales principales.
- Diagonales principales de una matriz.
- Matrices de Toeplitz.
- Diferencia simétrica.
- Conjunto de primos relativos.
- 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.