Вдохновлен вопросом на переполнение стека .
Учитывая непустой массив целых чисел 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]