Biasanya perlu membuat antarmuka pemilihan halaman. Biasanya terlihat seperti ini:
prev 1 ... 3 4 [5] 6 7 ... 173 next
Yang berarti ada total 173 halaman, dan Anda berada di halaman ke-5 saat ini.
Tantangan ini mengharuskan Anda mengambil jumlah total halaman dan nomor halaman saat ini sebagai input, dan menghasilkan string (atau array) untuk "menampilkan" pemilih halaman.
Memasukkan
2 bilangan bulat positif
- nomor halaman saat ini
- hitungan halaman
Dijamin bahwa 1 <= saat ini <= total.
Keluaran
Keluarkan string atau array yang mewakili ui untuk pemilih halaman.
- Jika output sebagai string, spasi tunggal (U + 0020) harus digunakan di antara setiap halaman.
- Jika output sebagai array, array harus menghasilkan hasil yang sama seperti string setelah mengkonversi setiap item menjadi string dan bergabung dengan mereka dengan satu spasi.
- Tiga titik (
...
) bukan opsional untuk output array.
- Tiga titik (
Detail
- Jika saat ini == 1, tidak ada "prev" yang akan ditampilkan, jika tidak, "prev" yang lebih dulu.
- Jika current == total, "next" tidak akan dihasilkan, jika tidak, "next" adalah yang terakhir.
- Halaman pertama (1) dan halaman terakhir (total) harus selalu ditampilkan.
- Halaman saat ini, halaman (saat ini - 1), halaman (saat ini - 2), halaman (saat ini + 1), halaman (saat ini + 2) harus ditampilkan selama berada dalam kisaran [1..total].
- Tidak ada nomor halaman lain yang harus dikeluarkan.
- Halaman yang dikeluarkan harus diurutkan dalam urutan menaik.
- Keluaran tidak boleh berisi nomor halaman duplikat.
- Halaman saat ini harus disorot dengan membungkusnya menjadi sepasang
[]
. - Jika ada celah di antara tetangga, tiga titik (
...
) harus dimasukkan.
Uji Kasus
Current Total Output
1 1 [1]
1 2 [1] 2 next
1 10 [1] 2 3 ... 10 next
3 3 prev 1 2 [3]
3 6 prev 1 2 [3] 4 5 6 next
4 6 prev 1 2 3 [4] 5 6 next
4 7 prev 1 2 3 [4] 5 6 7 next
3 10 prev 1 2 [3] 4 5 ... 10 next
5 10 prev 1 ... 3 4 [5] 6 7 ... 10 next
10 10 prev 1 ... 8 9 [10]
52 173 prev 1 ... 50 51 [52] 53 54 ... 173 next
Aturan
- Ini kode-golf, kode terpendek menang!
4,7
test case akan sangat dihargai - akan memastikan bahwa kedua case batas yang mengecualikan elips dapat secara bersamaan bertemu
4 , 6
sebagai test case. Mirip dengan3, 6
kasing, tetapi pastikan titik tidak ditambahkan ke sisi kiri.