Натхненний запитанням у Stack Overflow .
Враховуючи не порожній масив цілих чисел 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]