Dalam tantangan ini, Anda perlu mempartisi daftar, di mana partisi memiliki ukuran maks, ukuran min, dan ukuran yang disukai. Saya akan menggunakan notasi (min,pref,max)
untuk menunjukkan ukuran dalam tantangan ini.
Bagi mereka yang tidak terbiasa dengan partisi, daftar berikut telah dipartisi menjadi bagian dari 3:
[0..9] -> [[0,1,2],[3,4,5],[6,7,8]]
Ketika daftar ini tidak merata dibagi, Anda perlu partisi untuk menjadi seperti dekat dengan ukuran yang diinginkan mungkin: [0..10], (2,4,5) -> [[0,1,2,3],[4,5,6],[7,8,9]]
. Partisi ini lebih disukai daripada [[0,1,2,3],[4,5,6,7],[8,9]]
, meskipun yang terakhir memiliki lebih dari panjang yang disukai. Secara formal, kita perlu meminimalkan jumlah (partitionLength-preferredSize)^2
untuk setiap partisi.
Urutan panjang partisi tidak masalah: Untuk [0..5], (2,3,3)
, baik [[0,1,2],[3,4]]
atau [[0,1],[2,3,4]]
berfungsi. Jika tidak ada partisi mungkin, mengembalikan array kosong: [0..7], (4,4,5) -> []
.
Anda dapat mengasumsikan itu 1<=min<=pref<=max
, dan bahwa array yang dikirimkan kepada Anda adalah array integer yang tidak kosong. Array akan selalu menjadi argumen pertama. Anda dapat menerima min, maks, dan pref dalam urutan apa pun dan sebagai tuple atau sebagai argumen terpisah.
Program Anda harus berjalan dalam beberapa detik. Pada dasarnya, iterasi melalui setiap kemungkinan ukuran partisi dalam batas tidak diperbolehkan.
Kasus uji:
[1], (1,3,4) -> [[1]]
[100], (1,2,3) -> [[100]]
[1,2], (1,1,2) -> [[1],[2]]
[1,2], (1,2,2) -> [[1,2]]
[1,2], (1,3,3) -> [[1,2]]
[1,2,3], (1,2,3) -> [[1,2],[3]] or [[1,2,3]]
[1,2,3,4], (1,3,4) -> [[1,2,3,4]]
[1,2,3,4,5], (3,3,4) -> []
[1,2,3,4,5], (2,2,2) -> []
[1,2,3,4,5], (3,3,5) -> [[1,2,3,4,5]]
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49], (2,6,6) -> [[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18],[19,20,21,22,23,24],[25,26,27,28,29],[30,31,32,33,34],[35,36,37,38,39],[40,41,42,43,44],[45,46,47,48,49]]
Ini adalah kode-golf , jadi bidik sesedikit mungkin byte dalam bahasa favorit Anda!
[a..b]
termasuka
dan tidak termasukb
, benar?