前書き
この配列を見てみましょう:[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]
タスク
正の(ゼロ以外の)整数を持つ空でない配列を指定すると、部分文字列sum 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]