Escribe función que, dada una lista de valores enteros L, devuelva la longitud de la secuencia más larga de valores idénticos consecutivos.
Escribe una función, que dada una matriz M devuelva la matriz transpuesta.
Implementa una función compact(L1, L2) que, dadas dos listas y L2 de valores enteros ordenados estrictamente de menor a mayor, devuelva una lista L ordenada estrictamente que contiene la unión del contenido de L1 y L2 (excluyendo, necesariamente, los elementos repetidos).
Escribe una función common(L1, L2) que dadas dos listas ordenadas (no estrictamente) de valores devuelva la lista de valores comunes a L1 y L2.
Dada una lista L, escribe una función que nos diga si es palíndroma.
Diseña una función orden(L) que compruebe si una lista L está ordenada estrictamente: si L está ordenada crecientemente, devolverá 1, si lo está decrecientemente, devolverá -1 y si no sigue ningún orden devolverá 0. Por ejemplo, si L = [1, 3, 3] el resultado es 0 y, en cambio, si L = [5, 4, 2] el resultado es -1. Si la lista está vacía o contiene un único elemento, la función devolverá un 0.
Escribe una función compara(I1, I2) que compare dos intervalos dados como pares de números reales, es decir I1 = (a1, b1) e I2 = (a2, b2). La función devolverá -2 si I1 está a la izquierda de I2 (sean o no disjuntos), 1 si I1 está a la derecha de I2, y 0 si I1 está incluido dentro de I2 o viceversa
Dadas dos listas X = [x1,...,xN] e Y = [y1,...,yN] de valores reales correspondientes a las coordenadas (xn, yn) de N puntos un función y = f(x), diseña una función interpola(X, Y, x) que calcule el valor aproximado de y para un valor de x dado. Cabe suponer que min(X) <= x <= max(X) y que los valores de X están ordenados estrictamente de menor a mayor. Para ello calcula el valor xn máximo que satisface xn <= x y realiza una interpolación lineal entre (xn,yn) y (xn+1,yn+1).
Escribe una función stat(L) que, dada una lista de valores devuelva un diccionario que asocie a cada elemento el número de repeticiones en la lista. Por ejemplo, si L = [1,2,3,2,3,5,2] el diccionario contendrá las entradas {1:1,2:3,3:2,5:1}
A partir de la implementación del problema anterior, escribe una función que, dada una lista de enteros L, escriba en la pantalla cuántos valores aparecen en L repetidos una vez, cuántos dos veces, etc. El texto aparecerá ordenado de menor a mayor, por ejemplo, dirá "Hay 5 valores repetidos una vez, 3 valores repetidos dos veces y 2 valores repetidos dos veces".
Escribe una función repetidos(L) que devuelva True si la lista L contiene uno o más elementos repetidos y False si son todos distintos.
Si una matriz de enteros es una lista de listas de enteros, escribe una función borra_fila(M, i) que, dada la matriz M, devuelva la matriz M' que se obtiene al eliminar la fila i de M. Escribe otra función borra_columna(M, j) que devuelva la matriz M' que se obtiene al eliminar la fila j de M.
Escribe una función delta(m1, d1, m2, d2) que, dadas dos fechas de un año no bisiesto (identificadas mediante el número de mes del año y número de día del mes) calcule el número de días que hay entre ellas. Por ejemplo, si m1 = 11, d1 = 30, m2 = 12 y d2 = 1, el resultado es 1.
Escribe función que, dada una lista de valores enteros L, devuelva la longitud promedio de las subsecuencias consecutivas estrictamente crecientes. Por ejemplo, si L = [1,2,3,3,2,4], las subsecuencias consecutivas crecientes son [1,2,3] [3] y [2,4], por lo que la longitud promedio es 2.
Dado un rango de valores [xmin, xmax[ se quiere realizar un histograma de frecuencias a partir de una lista L = [x1,x2,...,xM] que contiene valores observados y del número N de barras del histograma. Escribe una función nbin(x, xmin, xmax, N) que calcule el intervalo al que pertenece el valor x (numerados desde 0 a N - 1). Después escribe otra función histo(L, N) que, a partir de la lista de valores L y del número de intervalos N calcule el número rn de valores en cada intervalo n (tomando min(L) y max(L) como extremos del rango) y devuelva una lista [r0,...,rN-1].
Finalmente, haz que la función dibuje el histograma obtenido.
Escribe una función cero(f, xmin, xmax, epsilon) que devuelva un valor de x entre xmin y xmax tal que el valor absoluto de la función f en x es menor que epsilon, suponiendo que f(xmin) * f(xmax) < 0.
Escribe una función minimiza(f, xmin, xmed, xmax, epsilon) que devuelva, con precisión epsilon, el valor de x donde f alcanza un mínimo local en el intervalo [xmin, xmax] suponiendo que xmin < xmed < xmax y que f(xmed) es menor que f(xmin) y que f(xmax).
Implementa una función is_palindrome(s) que devuelva cierto si s es una cadena de texto palíndroma, por ejemplo "luzazul" y falso en caso contrario. Como mejora, haz que no tenga en cuenta los espacios en blanco o de puntuación, la caja de las letras (mayúscula o minúscula), ni las tildes en las vocales, es decir, que reconozca como palíndromas expresiones como "Dábale arroz a la zorra el abad" o "A man, a plan a canal: Panama").
Diseña una función merge(L1, L2) que, dadas dos listas ordenadas L1 y L2, devuelva una lista ordenada L con el mismo contenido que L1 + L2. La función debe acabar siempre en un tiempo proporcional a len(l1) + len(L2). Es, por tanto, incorrecto escribir return sorted(L1 + L2).
Dado un diccionario D1 que asocia cadenas de texto con identificadores numéricos enteros (por ejemplo, asocia nombres con número de expediente) y otro diccionario que asocia los identificadores con observaciones (por ejemplo, dirección postal), construye una función traduce(D1, D2) que devuelva un diccionario que asocie las claves de D1 con los valores correspondientes de D2. En caso de inconsistencias, es decir, cuando un valor de D1 no tiene clave de entrada en D2 o una clave de D2 no se corresponde con ningún valor de D1, la función debe escribir en la pantalla un aviso identificando claramente el problema, es decir, el par (clave, valor) que origina la inconsistencia y el diccionario donde se halla.
Diseña un diccionario D que guarde varios valores asociados a la misma clave usando, para ello, conjuntos de valores. Escribe una función add(D, key, val) que añada el valor val al contenido guardado para la clave key y otra función contains(D, key, val) que devuelva True si val es uno de los valores asociados a la clave key y False en caso contrario.
Escribe una función subset(C1, C2) que, dados dos conjuntos C1 y C2, devuelva True si bien C2 es un subconjunto de C1 o C2 es un subconjunto de C1.