pengantar
Mari kita amati array ini: [3, 2, 4, 1, 1, 5, 1, 2]
.
Setiap elemen menampilkan panjang substring yang harus disimpulkan. Mari kita lihat elemen pertama dari array di atas:
[3, 2, 4, 1, 1, 5, 1, 2]
^
Elemen pada indeks pertama adalah 3 , jadi kami sekarang mengambil substring dengan panjang tiga dengan indeks yang sama dengan posisi awal:
[3, 2, 4]
Ketika diringkas, ini menghasilkan 9 , jadi elemen pertama dari set jumlah substring adalah 9
.
Kami melakukan ini untuk semua elemen dalam 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]
Anda dapat melihat bahwa angka 5 adalah kasus yang aneh. Angka itu melebihi panjang array:
[3, 2, 4, 1, 1, 5, 1, 2]
^ ^ ^ ^ ^
Kami akan mengabaikan semua yang melebihi array, jadi kami gunakan saja [5, 1, 2]
.
Langkah terakhir adalah merangkum semuanya:
[3, 2, 4] -> 9
[2, 4] -> 6
[4, 1, 1, 5] -> 11
[1] -> 1
[1] -> 1
[5, 1, 2] -> 8
[1] -> 1
[2] -> 2
Dan itu adalah array yang perlu di-output:
[9, 6, 11, 1, 1, 8, 1, 2]
Tugas
Diberikan array yang tidak kosong dengan bilangan bulat positif (bukan nol), mengeluarkan himpunan jumlah substring . Ini adalah kode-golf , jadi pengiriman dengan jumlah byte terkecil menang!
Uji kasus
[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]