Dadas dos listas no enteras de enteros, su envío debe calcular y devolver la convolución discreta de los dos. Curiosamente, si considera los elementos de la lista como coeficientes de polinomios, la convolución de las dos listas representa los coeficientes del producto de los dos polinomios.
Definición
Dadas las listas A=[a(0),a(1),a(2),...,a(n)]
y B=[b(0),b(1),b(2),...,b(m)]
(configuración a(k)=0 for k<0 and k>n
y b(k)=0 for k<0 and k>m
), entonces la convolución de los dos se define como A*B=[c(0),c(1),...,c(m+n)]
dondec(k) = sum [ a(x)*b(y) for all integers x y such that x+y=k]
Reglas
- Se permite cualquier formato de entrada y salida conveniente para su idioma.
- Las incorporaciones para convolución, creación de matrices de convolución, correlación y multiplicación polinómica no están permitidas.
Ejemplos
[1,1]*[1] = [1,1]
[1,1]*[1,1] = [1,2,1]
[1,1]*[1,2,1] = [1,3,3,1]
[1,1]*[1,3,3,1] = [1,4,6,4,1]
[1,1]*[1,4,6,4,1] = [1,5,10,10,5,1]
[1,-1]*[1,1,1,1,1] = [1,0,0,0,0,-1]
[80085,1337]*[-24319,406] = [-1947587115,7,542822]
[1,1]*[] = []
, y no es posible que lo sea[]*[] = ?
. La convolución no está bien definida en las listas vacías. Creo que debe garantizar que las listas de entrada no estén vacías.