Введение
Давайте понаблюдаем за этот массив: [3, 2, 4, 1, 1, 5, 1, 2]
.
Каждый элемент отображает длину подстроки, которую необходимо суммировать. Давайте посмотрим на первый элемент вышеуказанного массива:
[3, 2, 4, 1, 1, 5, 1, 2]
^
Элемент в первом индексе равен 3 , поэтому теперь мы берем подстроку длины три с тем же индексом, что и в начальной позиции:
[3, 2, 4]
При суммировании это приводит к 9 , поэтому первый элемент из набора суммы подстрок равен 9
.
Мы делаем это для всех элементов в массиве:
3 -> [3, 2, 4]
2 -> [2, 4]
4 -> [4, 1, 1, 5]
1 -> [1]
1 -> [1]
5 -> [5, 1, 2]
1 -> [1]
2 -> [2]
Вы можете видеть, что число 5 немного странно. Это число превышает длину массива:
[3, 2, 4, 1, 1, 5, 1, 2]
^ ^ ^ ^ ^
Мы будем игнорировать все, что превышает массив, поэтому мы просто используем [5, 1, 2]
.
Последний шаг - подвести итог:
[3, 2, 4] -> 9
[2, 4] -> 6
[4, 1, 1, 5] -> 11
[1] -> 1
[1] -> 1
[5, 1, 2] -> 8
[1] -> 1
[2] -> 2
И это массив, который должен быть выведен:
[9, 6, 11, 1, 1, 8, 1, 2]
Задание
Если дан непустой массив с положительными (ненулевыми) целыми числами, выведите набор суммы подстрок . Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
Контрольные примеры
[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]