Terinspirasi oleh pertanyaan di Stack Overflow .
Diberikan array integer yang tidak kosong x
dan integer positif n
, hitung jumlah setiap blok geser yang panjang di n
sepanjang array x
, secara melingkar mengisi nilai-nilai yang hilang di sebelah kiri dengan nilai-nilai dari kanan sebagai berikut:
- blok pertama berisi entri pertama
x
, didahului olehn-1
entri yang digeser secara sirkuler; - blok kedua memiliki entri pertama dan kedua
x
, didahului olehn-2
entri yang digeser secara sirkuler; dan seterusnya.
Array output y
memiliki ukuran yang sama dengan x
. Dimungkinkan untuk n
melebihi panjang x
, dan kemudian nilai x
sirkuler digunakan kembali beberapa kali .
Contohnya
Contoh 1 (nilai digunakan kembali hanya sekali)
x = [2, 4, -3, 0, -4]
n = 3
berikan sebagai output
y = [-2, 2, 3, 1, -7]
dimana
-2
adalah jumlah dari blok[0, -4, 2]
(dua nilai pertama berasal dari pergeseran melingkar)2
adalah penjumlahan[-4, 2, 4]
(nilai pertama berasal dari penggeseran lingkaran)3
adalah jumlah dari[2, 4, -3]
(tidak diperlukan lagi penggeseran lingkaran)1
adalah jumlah dari[4, -3, 0]
-7
adalah jumlah dari[-3, 0, -4]
.
Contoh 2 (nilai digunakan kembali beberapa kali)
x = [1, 2]
n = 5
memberikan
y = [7, 8]
dimana
7
adalah jumlah blok[1, 2, 1, 2, 1]
(empat nilai pertama telah digunakan kembali secara sirkuler)8
adalah jumlah blok[2, 1, 2, 1, 2]
(tiga nilai pertama telah digunakan kembali secara sirkuler)
Aturan tambahan
- Algoritme harus bekerja untuk array dengan ukuran arbitrer dan untuk nilai integer arbitrer. Dapat diterima jika program dibatasi oleh tipe data atau batasan memori; tetapi nilai integer positif maupun negatif harus ditangani.
- Input / output dapat diambil / diproduksi dengan cara apa pun yang wajar .
- Program atau fungsi diizinkan, dalam bahasa pemrograman apa pun . Celah standar dilarang.
- Kode terpendek dalam byte menang.
Uji kasus
x, n, -> y
[2, 4, -3, 0, -4], 3 -> [-2, 2, 3, 1, -7]
[1, 2], 5 -> [7, 8]
[2], 7 -> [14]
[-5, 4, 0, 1, 0, -10, -4], 4 -> [-19, -15, -5, 0, 5, -9, -13]
[-5, 4, 0, 1, 0, -10, -4], 1 -> [-5, 4, 0, 1, 0, -10, -4]
[-2, -1, 0, 1, 2, 3], 5 -> [4, 3, 2, 1, 0, 5]
[-10, 0, 10], 4 -> [-10, 0, 10]