Étant donné deux listes d'entiers non vides , votre soumission doit calculer et renvoyer la convolution discrète des deux. Fait intéressant, si vous considérez les éléments de la liste comme des coefficients de polynômes, la convolution des deux listes représente les coefficients du produit des deux polynômes.
Définition
Étant donné les listes A=[a(0),a(1),a(2),...,a(n)]
et B=[b(0),b(1),b(2),...,b(m)]
(réglage a(k)=0 for k<0 and k>n
et b(k)=0 for k<0 and k>m
), la convolution des deux est définie comme A*B=[c(0),c(1),...,c(m+n)]
oùc(k) = sum [ a(x)*b(y) for all integers x y such that x+y=k]
Règles
- Tout formatage d'entrée et de sortie pratique pour votre langue est autorisé.
- Les fonctions intégrées pour la convolution, la création de matrices de convolution, la corrélation et la multiplication polynomiale ne sont pas autorisées.
Exemples
[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]*[] = []
, et ne peut pas tenir pour[]*[] = ?
. La convolution n'est pas bien définie sur les listes vides. Je pense que vous devez garantir que les listes d'entrée ne sont pas vides.