Inspiriert von einer Frage bei Stack Overflow .
Berechnen Sie bei einem nicht leeren Array von Ganzzahlen x
und einer positiven Ganzzahl n
die Summe der einzelnen Gleitblöcke mit der Länge n
des 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-1
zirkulär verschobene Einträge vorangestellt sind . - der zweite Block hat die ersten und zweiten Einträge von
x
, denenn-2
zirkulär verschobene Einträge vorausgehen ; und so weiter.
Das Ausgabearray y
hat 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
-2
ist die Summe des Blocks[0, -4, 2]
(die ersten beiden Werte stammen aus der zirkularen Verschiebung)2
ist die Summe von[-4, 2, 4]
(der erste Wert ergibt sich aus der zirkularen Verschiebung)3
ist die Summe von[2, 4, -3]
(keine zirkuläre Verschiebung mehr notwendig)1
ist die Summe von[4, -3, 0]
-7
ist die Summe von[-3, 0, -4]
.
Beispiel 2 (Werte werden mehrfach wiederverwendet)
x = [1, 2]
n = 5
geben
y = [7, 8]
woher
7
ist die Summe des Blocks[1, 2, 1, 2, 1]
(die ersten vier Werte wurden zirkulär wiederverwendet)8
ist 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]