Inspiré d' une question à Stack Overflow .
Étant donné un tableau d'entiers non vide x
et un entier positif n
, calculez la somme de chaque bloc glissant de longueur le n
long du tableau x
, en remplissant de manière circulaire les valeurs manquantes à gauche avec des valeurs à droite comme suit:
- le premier bloc contient la première entrée de
x
, précédée parn-1
des entrées décalées circulairement; - le deuxième bloc a les première et deuxième entrées de
x
, précédées parn-2
des entrées décalées circulairement; etc.
Le tableau de sortie y
a la même taille que x
. Il est possible n
de dépasser la longueur de x
, puis les valeurs de x
sont réutilisées plusieurs fois de manière circulaire .
Exemples
Exemple 1 (les valeurs ne sont réutilisées qu'une seule fois)
x = [2, 4, -3, 0, -4]
n = 3
donner en sortie
y = [-2, 2, 3, 1, -7]
où
-2
est la somme du bloc[0, -4, 2]
(les deux premières valeurs proviennent du décalage circulaire)2
est la somme de[-4, 2, 4]
(la première valeur provient du décalage circulaire)3
est la somme de[2, 4, -3]
(aucun décalage circulaire n'est plus nécessaire)1
est la somme de[4, -3, 0]
-7
est la somme de[-3, 0, -4]
.
Exemple 2 (les valeurs sont réutilisées plusieurs fois)
x = [1, 2]
n = 5
donner
y = [7, 8]
où
7
est la somme du bloc[1, 2, 1, 2, 1]
(les quatre premières valeurs ont été réutilisées circulairement)8
est la somme du bloc[2, 1, 2, 1, 2]
(les trois premières valeurs ont été réutilisées circulairement)
Règles supplémentaires
- L'algorithme devrait fonctionner pour les tableaux de taille arbitraire et pour les valeurs entières arbitraires. Il est acceptable si le programme est limité par le type de données ou les restrictions de mémoire; mais les valeurs entières positives et négatives doivent être gérées.
- Les entrées / sorties peuvent être prises / produites par tout moyen raisonnable .
- Les programmes ou fonctions sont autorisés, dans n'importe quel langage de programmation . Les failles standard sont interdites.
- Le code le plus court en octets gagne.
Cas de test
x, n, -> y
[2, 4, -3, 0, -4], 3 -> [-2, 2, 3, 1, -7]
[1, 2], 5 -> [7, 8]
[2], 7 -> [14]
[-5, 4, 0, 1, 0, -10, -4], 4 -> [-19, -15, -5, 0, 5, -9, -13]
[-5, 4, 0, 1, 0, -10, -4], 1 -> [-5, 4, 0, 1, 0, -10, -4]
[-2, -1, 0, 1, 2, 3], 5 -> [4, 3, 2, 1, 0, 5]
[-10, 0, 10], 4 -> [-10, 0, 10]