Inspiriert von einer Frage bei Stack Overflow .
Berechnen Sie bei einem nicht leeren Array von Ganzzahlen xund einer positiven Ganzzahl ndie Summe der einzelnen Gleitblöcke mit der Länge ndes Arrays x, und füllen Sie die fehlenden Werte links zirkulär mit Werten von rechts wie folgt:
- Der erste Block enthält den ersten Eintrag von
x, demn-1zirkulär verschobene Einträge vorangestellt sind . - der zweite Block hat die ersten und zweiten Einträge von
x, denenn-2zirkulär verschobene Einträge vorausgehen ; und so weiter.
Das Ausgabearray yhat die gleiche Größe wie x. Es ist möglich n, die Länge von zu überschreiten x, und dann werden die Werte von mehrmalsx zirkulär wiederverwendet .
Beispiele
Beispiel 1 (Werte werden nur einmal verwendet)
x = [2, 4, -3, 0, -4]
n = 3
als Ausgabe geben
y = [-2, 2, 3, 1, -7]
woher
-2ist die Summe des Blocks[0, -4, 2](die ersten beiden Werte stammen aus der zirkularen Verschiebung)2ist die Summe von[-4, 2, 4](der erste Wert ergibt sich aus der zirkularen Verschiebung)3ist die Summe von[2, 4, -3](keine zirkuläre Verschiebung mehr notwendig)1ist die Summe von[4, -3, 0]-7ist die Summe von[-3, 0, -4].
Beispiel 2 (Werte werden mehrfach wiederverwendet)
x = [1, 2]
n = 5
geben
y = [7, 8]
woher
7ist die Summe des Blocks[1, 2, 1, 2, 1](die ersten vier Werte wurden zirkulär wiederverwendet)8ist die Summe des Blocks[2, 1, 2, 1, 2](die ersten drei Werte wurden zirkulär wiederverwendet)
Zusätzliche Regeln
- Der Algorithmus sollte für Arrays beliebiger Größe und für beliebige ganzzahlige Werte funktionieren. Es ist akzeptabel, wenn das Programm durch Datentyp- oder Speicherbeschränkungen eingeschränkt ist. Es müssen jedoch sowohl positive als auch negative ganzzahlige Werte behandelt werden.
- Input / Output kann auf jede vernünftige Weise genommen / produziert werden .
- Programme oder Funktionen sind in jeder Programmiersprache zulässig . Standardlücken sind verboten.
- Kürzester Code in Bytes gewinnt.
Testfälle
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]