소개
이 배열을 살펴 봅시다 : [3, 2, 4, 1, 1, 5, 1, 2].
각 요소는 합쳐야하는 부분 문자열의 길이를 표시합니다. 위 배열의 첫 번째 요소를 살펴 보겠습니다.
[3, 2, 4, 1, 1, 5, 1, 2]
^
첫 번째 인덱스의 요소는 3 이므로 시작 위치와 동일한 인덱스를 가진 길이가 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]
작업
양의 (0이 아닌) 정수를 가진 비어 있지 않은 배열이 주어지면 부분 문자열 합 set을 출력하십시오 . 이것은 code-golf 이므로 바이트 수가 가장 적은 제출이 승리합니다!
테스트 사례
[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]
