Penafian: sementara saya telah berada di situs ini untuk tujuan hiburan untuk sementara waktu sekarang, ini adalah pertanyaan pertama saya, jadi tolong maafkan kesalahan kecil apa pun.
Latar Belakang
Ketika menugaskan kami mengerjakan PR, guruku benar-benar menyebalkan dan menulis semua masalah yang harus kami lakukan secara individual. Karena itu, saya perlu selamanya menyalin masalah mana yang harus saya lakukan. Saya pikir untuk membuat hidup saya lebih mudah, saya akan mengirimnya sebuah program yang bisa membuat daftar masalah tidak memakan banyak ruang.
Saat menuliskan daftar nomor halaman atau masalah, kami menggunakan tanda hubung untuk menunjukkan rentang. Misalnya, 19-21
menjadi 19, 20, 21
. Jika ada celah di antaranya, dua rentang yang dipisahkan koma digunakan: 19-21, 27-31
menjadi 19, 20, 21, 27, 28, 29, 30, 31
.
Saat ini, Anda mungkin berpikir: "ini sepertinya cukup sepele". Sebenarnya, ini sudah dijawab di sini dan di sini .
Namun, ada yang menangkap. Jika kami memiliki rentang dengan digit berurutan yang sama, digit yang diulang dapat diabaikan. Misalnya: 15, 16, 17
menjadi 15-7
, dan 107, 108, 109
menjadi107-9
. Untuk bonus, jika digit terakhir yang sama berturut-turut adalah 1 lebih besar dan digit terakhir batas atas kurang dari atau sama dengan yang lebih rendah, berikut ini dapat dihilangkan (maaf jika itu terdengar membingungkan; mungkin beberapa contoh akan menjernihkannya) . 109-113
menjadi109-3
, karena angka terakhir yang lebih rendah menyiratkan peningkatan tempat 10-an.
Tantangan
Program Anda harus mengambil daftar bilangan bulat melalui input (apa pun standar untuk bahasa Anda, atau fungsi). Anda dapat memutuskan apakah daftar ini dipisahkan oleh koma, dipisahkan oleh ruang, atau sebagai daftar / larik yang sebenarnya.
Output cara terpendek (pertama diurutkan berdasarkan jumlah rentang, maka jumlah karakter termasuk dalam rentang) untuk mewakili bahwa daftar menggunakan notasi ini. Setiap rentang putus-putus harus di garis yang sama, tetapi rentang dapat dipisahkan dengan koma atau baris baru (trailing baris baru atau koma diizinkan). Rentang ini harus berurutan.
Karena sekolah kami, Wi-Fi sangat buruk , saya harus membuat file sekecil mungkin untuk mengirimkannya kepadanya. Kode terpendek (dalam byte) menang.
Bonus
Guru saya ceroboh, jadi ada beberapa hal yang akan membantunya. Beberapa bonus menumpuk melalui perkalian, misalnya bonus -10% (x 90%) dan bonus -25% (x 75%) = 90% * 75% = x 67,5% (-32,5% bonus).
- Terkadang dia menempatkan mereka dalam urutan yang salah (dia bukan guru matematika). Ambil bonus -20% jika program Anda dapat menerima bilangan bulat yang tidak diurutkan paling tidak hingga terbesar.
- Buku kami aneh, dan setiap bagian mulai menghitung masalah pada -10. Jika program Anda dapat menerima angka negatif, ambil -25%.
- Jika ia menerima bonus dari digit terakhir yang lebih rendah yang meningkatkan tempat 10, misalnya
25-32
mengurangi menjadi25-2
, ambil bonus -50%.
Uji Kasus
In: 1, 2, 3, 4, 5
Out: 1-5
In: 3, 4, 5, 9, 10, 11, 12
Out: 3-5, 9-12
In: 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160
Out: 149-60
In: 1 2 3 4
Out: 1-4
For bonuses:
In: 109, 110, 111, 112, 113
Out: 109-3
In: 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29
Out: 19-9
In: -3, -2, -1, 0, 1, 2
Out: -3-2
In: -3, -2, -1
Out: -3--1
Jawaban akan diterima pada hari Sabtu, 19 Desember 2015.
GLHF!
149 150 151 152 153 154 155 156 157 178 159 160
?
19-9
untuk 19,20,...,29
dan bukan 19-29
seperti yang tersirat dalam teks. Jadi mana yang benar?
1-4 9-2
?