Einführung
Lassen Sie sich diese Anordnung beachten: [3, 2, 4, 1, 1, 5, 1, 2]
.
Jedes Element zeigt die Länge des zu summierenden Teilstrings an. Werfen wir einen Blick auf das erste Element des obigen Arrays:
[3, 2, 4, 1, 1, 5, 1, 2]
^
Das Element am ersten Index ist 3 , daher nehmen wir jetzt einen Teilstring der Länge drei mit demselben Index wie die Startposition:
[3, 2, 4]
Zusammengefasst ergibt dies 9 , sodass das erste Element der Teilstringsummenmenge ist 9
.
Wir machen das für alle Elemente im Array:
3 -> [3, 2, 4]
2 -> [2, 4]
4 -> [4, 1, 1, 5]
1 -> [1]
1 -> [1]
5 -> [5, 1, 2]
1 -> [1]
2 -> [2]
Sie können sehen, dass die Nummer 5 ein bisschen komisch ist. Diese Zahl überschreitet die Länge des Arrays:
[3, 2, 4, 1, 1, 5, 1, 2]
^ ^ ^ ^ ^
Wir werden alles ignorieren, was das Array überschreitet, also verwenden wir einfach [5, 1, 2]
.
Der letzte Schritt ist, alles zusammenzufassen:
[3, 2, 4] -> 9
[2, 4] -> 6
[4, 1, 1, 5] -> 11
[1] -> 1
[1] -> 1
[5, 1, 2] -> 8
[1] -> 1
[2] -> 2
Und das ist das Array, das ausgegeben werden muss:
[9, 6, 11, 1, 1, 8, 1, 2]
Die Aufgabe
Bei einem nicht leeren Array mit positiven Ganzzahlen (ungleich Null) wird der Teilstringsummensatz ausgegeben . Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
Testfälle
[1, 2, 3, 4, 5] -> [1, 5, 12, 9, 5]
[3, 3, 3, 3, 3, 3, 3, 3] -> [9, 9, 9, 9, 9, 9, 6, 3]
[5, 1, 2, 4, 1] -> [13, 1, 6, 5, 1]
[1] -> [1]