introduzione
Osserviamo questa matrice: [3, 2, 4, 1, 1, 5, 1, 2]
.
Ogni elemento visualizza la lunghezza della sottostringa che deve essere riassunta. Diamo un'occhiata al primo elemento dell'array sopra:
[3, 2, 4, 1, 1, 5, 1, 2]
^
L'elemento al primo indice è 3 , quindi ora prendiamo una sottostringa di lunghezza tre con lo stesso indice della posizione iniziale:
[3, 2, 4]
Riassumendo, questo risulta in 9 , quindi il primo elemento dell'insieme di somma della sottostringa è 9
.
Lo facciamo per tutti gli elementi dell'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]
Puoi vedere che il numero 5 è un po 'strano. Quel numero supera la lunghezza dell'array:
[3, 2, 4, 1, 1, 5, 1, 2]
^ ^ ^ ^ ^
Ignoreremo tutto ciò che supera l'array, quindi utilizziamo semplicemente [5, 1, 2]
.
L'ultimo passo è riassumere tutto:
[3, 2, 4] -> 9
[2, 4] -> 6
[4, 1, 1, 5] -> 11
[1] -> 1
[1] -> 1
[5, 1, 2] -> 8
[1] -> 1
[2] -> 2
E questo è l'array che deve essere emesso:
[9, 6, 11, 1, 1, 8, 1, 2]
L'obiettivo
Dato un array non vuoto con numeri interi positivi (diversi da zero), emette il set di somma della sottostringa . Questo è code-golf , quindi vince l'invio con il minor numero di byte!
Casi test
[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]