Blokir jenis acak
The blok mengocok semacam adalah metode (bukan buatan) menyortir daftar. Ini berfungsi sebagai berikut, diilustrasikan oleh sebuah contoh.
[6, 1, 0, 3, 2, 4, -2, -1]
Break list into contiguous blocks
[6][1, 0][3, 2, 4][-2, -1]
Sort each block
[6][0, 1][2, 3, 4][-2, -1]
Sort blocks lexicographically
[-2, -1][0, 1][2, 3, 4][6]
Concatenate
[-2, -1, 0, 1, 2, 3, 4, 6]
Partisi menjadi blok yang berdekatan dapat dipilih secara sewenang-wenang. Namun, tidak semua pilihan blok akan menghasilkan daftar yang diurutkan di akhir:
[6, 1, 0, 3, 2, 4, -2, -1]
[6, 1, 0][3, 2, 4][-2, -1]
[0, 1, 6][2, 3, 4][-2, -1]
[-2, -1][0, 1, 6][2, 3, 4]
[-2, -1, 0, 1, 6, 2, 3, 4]
Jika semua blok memiliki panjang 1, atau jika hanya ada satu blok, maka hasilnya tentu saja akan diurutkan. Tetapi ini adalah kasus yang agak ekstrim. Dalam tantangan ini, tugas Anda adalah menemukan keseimbangan antara jumlah blok dan panjang maksimum blok.
Tugas
Masukan Anda adalah daftar kosong dari bilangan bulat L , yang diambil dalam format apa pun yang masuk akal. Output Anda harus bilangan bulat terkecil N sehingga L dapat blok mengocok diurutkan sehingga jumlah blok dan panjang masing-masing blok yang paling N .
Hitungan byte terendah di setiap bahasa menang. Aturan standar kode-golf berlaku.
Uji kasus
[5] -> 1
[1,2] -> 2
[0,2,1,-1] -> 3
[-1,0,2,1] -> 2
[9,3,8,2,7] -> 4
[9,2,8,3,7] -> 3
[5,9,3,7,2,4,8] -> 7
[-1,-2,1,2,-1,-2,7] -> 4
[6,1,0,3,2,4,-2,-1] -> 4
[12,5,6,-6,-1,0,2,3] -> 3
[1,0,1,0,1,0,1,0,1,0] -> 6
[1,2,1,3,1,2,3,2,4,3] -> 5
[7,7,7,7,8,9,7,7,7,7] -> 4