Zainspirowany pytaniem w Stack Overflow .
Biorąc pod uwagę niepustą tablicę liczb całkowitych xi dodatnią liczbę całkowitą n, oblicz sumę każdego przesuwającego się bloku długości nwzdłuż tablicy x, wypełniając cyklicznie brakujące wartości po lewej stronie wartościami z prawej strony w następujący sposób:
- pierwszy blok zawiera pierwszy wpis
xpoprzedzonyn-1przesuniętymi kołowo wpisami; - drugi blok ma pierwszy i drugi wpis
xpoprzedzonyn-2okrągłym przesunięciem wpisów; i tak dalej.
Tablica wyjściowa yma taki sam rozmiar jak x. Możliwe jest nprzekroczenie długości x, a następnie wartości xsą kilkakrotnie ponownie używane w obiegu .
Przykłady
Przykład 1 (wartości są ponownie używane tylko raz)
x = [2, 4, -3, 0, -4]
n = 3
podać jako wynik
y = [-2, 2, 3, 1, -7]
gdzie
-2jest sumą bloku[0, -4, 2](pierwsze dwie wartości pochodzą z przesunięcia kołowego)2jest sumą[-4, 2, 4](pierwsza wartość pochodzi z przesunięcia kołowego)3jest sumą[2, 4, -3](nie trzeba już przesuwać kołowo)1jest sumą[4, -3, 0]-7jest sumą[-3, 0, -4].
Przykład 2 (wartości są wielokrotnie używane)
x = [1, 2]
n = 5
dać
y = [7, 8]
gdzie
7jest sumą bloku[1, 2, 1, 2, 1](pierwsze cztery wartości zostały ponownie wykorzystane cyklicznie)8jest sumą bloku[2, 1, 2, 1, 2](pierwsze trzy wartości zostały ponownie wykorzystane cyklicznie)
Dodatkowe zasady
- Algorytm powinien działać dla tablic o dowolnym rozmiarze i dla dowolnych wartości całkowitych. Jest dopuszczalne, jeśli program jest ograniczony typem danych lub ograniczeniami pamięci; ale należy obsługiwać zarówno dodatnie, jak i ujemne wartości całkowite.
- Dane wejściowe / wyjściowe można przyjmować / wytwarzać dowolnymi rozsądnymi środkami .
- Programy lub funkcje są dozwolone w dowolnym języku programowania . Standardowe luki są zabronione.
- Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
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]