Вдохновлен вопросом на переполнение стека .
Учитывая непустой массив целых чисел x
и положительное целое число n
, вычислите сумму каждого скользящего блока длины n
вдоль массива x
, циклически заполняя недостающие значения слева значениями справа следующим образом:
- первый блок содержит первую запись
x
, которой предшествуютn-1
циклически сдвинутые записи; - второй блок имеет первую и вторую записи
x
, которым предшествуютn-2
циклически сдвинутые записи; и так далее.
Выходной массив y
имеет тот же размер, что и x
. Возможно n
превышение длины x
, а затем значения многократно повторно используются поx
кругу .
Примеры
Пример 1 (значения используются повторно только один раз)
x = [2, 4, -3, 0, -4]
n = 3
дать в качестве вывода
y = [-2, 2, 3, 1, -7]
где
-2
сумма блока[0, -4, 2]
(первые два значения получены из кругового сдвига)2
является суммой[-4, 2, 4]
(первое значение получается из кругового сдвига)3
является суммой[2, 4, -3]
(нет необходимости в круговом сдвиге)1
это сумма[4, -3, 0]
-7
это сумма[-3, 0, -4]
.
Пример 2 (значения используются повторно несколько раз)
x = [1, 2]
n = 5
дайте
y = [7, 8]
где
7
сумма блока[1, 2, 1, 2, 1]
(первые четыре значения были повторно использованы циклически)8
сумма блока[2, 1, 2, 1, 2]
(первые три значения были повторно использованы циклически)
Дополнительные правила
- Алгоритм должен работать для массивов произвольного размера и для произвольных целочисленных значений. Это допустимо, если программа ограничена типом данных или ограничением памяти; но положительные и отрицательные целочисленные значения должны обрабатываться.
- Ввод / вывод может быть взят / произведен любым разумным способом .
- Программы или функции разрешены на любом языке программирования . Стандартные лазейки запрещены.
- Самый короткий код в байтах побеждает.
Контрольные примеры
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]