Вступ
Давайте подивимося за цей масив: [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]