pengantar
Sebagian besar pegolf kode di sini menambahkan penjelasan pada kiriman mereka, jadi lebih mudah untuk memahami apa yang terjadi. Biasanya codelines pergi ke kiri dan penjelasan yang sesuai ke kanan dengan semacam pemisah. Agar terlihat cantik, pemisah semua berada di kolom yang sama. Juga teks penjelasan panjang biasanya dibungkus ke baris berikutnya, sehingga pembaca tidak harus menggulir secara horizontal untuk membaca semuanya.
Namun, ketika Anda ingin mengedit penjelasan ini karena Anda membuat beberapa golf gila, Anda sering menghabiskan waktu untuk membuat penjelasan Anda lagi. Karena ini adalah tugas yang sangat berulang, Anda ingin menulis sebuah program untuk ini.
Tantangan
Diberikan beberapa baris kode dengan penjelasan dan pemisah, menampilkan kode yang diformat dengan baik dengan penjelasan.
Contoh
Memasukkan
shM-crz1dc4. "ANDBYOROF # z = input rz1 # ubah input menjadi huruf besar masukan masukan cd # pada spasi c4. "ANDBYOROF # membuat daftar kata - kata dari string yang dikemas yang akan diabaikan - # saring kata-kata itu hM # hanya mengambil huruf pertama dari semua kata s # gabungkan mereka menjadi satu string
Keluaran
shM-crz1dc4. "ANDBYOROF # z = input rz1 # ubah input menjadi huruf besar masukan masukan cd # pada spasi c4. "ANDBYOROF # membuat daftar kata - kata dari string yang dikemas # diabaikan - # saring kata-kata itu hM # hanya mengambil huruf pertama dari semua kata s # gabungkan mereka menjadi satu string
Satu cookie untuk yang pertama yang bisa mengetahui apa yang dilakukan kode ini.
Algoritma pemformatan
- Temukan baris kode terpanjang (tidak termasuk penjelasan dan spasi antara kode dan pemisah).
- Tambahkan 5 spasi setelah baris kode ini dan tambahkan pemisah yang sesuai dengan penjelasan. Sekarang ini adalah garis referensi.
- Sesuaikan setiap baris lain ke baris referensi ini, sehingga pemisah semua berada di kolom yang sama.
- Bungkus semua baris yang lebih panjang dari 93 karakter ke baris baru dengan cara berikut:
- Temukan kata terakhir yang ujungnya ada di kolom 93 atau lebih rendah.
- Ambil semua kata setelah ini dan bungkus ke baris baru dengan pemisah utama dan spasi yang benar. Ruang antara kedua kata tersebut harus dihapus, sehingga baris pertama diakhiri dengan karakter kata dan baris kedua dimulai dengan satu setelah pemisah.
- Jika baris yang dihasilkan masih lebih dari 93 karakter, lakukan hal yang sama lagi sampai setiap baris di bawah 94 karakter.
Catatan
- Sebuah kata terdiri dari karakter yang bukan spasi. Kata-kata dipisahkan oleh satu ruang.
- Pembungkus kata selalu memungkinkan. Ini berarti bahwa tidak ada kata yang terlalu panjang sehingga tidak memungkinkan pembungkusnya.
- Input hanya akan berisi ASCII yang dapat dicetak dan tidak akan memiliki spasi spasi tambahan
- Pemisah hanya akan muncul sekali per baris.
- Sementara penjelasan dapat memiliki panjang tidak terbatas, pemisah dan kode hanya dapat memiliki panjang
93 - 5 = 87
karakter maksimum gabungan . 5 karakter adalah spasi antara kode dan pemisah. Panjang kode dan pemisah akan selalu setidaknya satu karakter. - Input mungkin berisi baris kosong. Itu tidak akan mengandung karakter apa pun (kecuali baris baru jika Anda mengambil input sebagai string multiline). Baris-baris kosong itu juga harus ada di output.
- Setiap baris akan memiliki beberapa kode, pemisah, dan penjelasan. Pengecualian adalah baris kosong.
- Anda dapat mengambil input dalam format apa pun yang wajar, asalkan tidak diproses terlebih dahulu. Jelaskan dalam jawaban Anda mana yang Anda gunakan.
- Output dapat berupa string multiline atau daftar string.
Aturan
- Fungsi atau program lengkap diizinkan.
- Aturan default untuk input / output.
- Celah standar berlaku.
- Ini adalah kode-golf , sehingga byte-count terendah akan menang. Tiebreak adalah pengiriman sebelumnya.
Uji kasus
Format input di sini adalah daftar string yang mewakili garis dan string tunggal untuk pemisah. Keduanya dipisahkan oleh koma. Output adalah daftar string.
['shM-crz1dc4. "ANDBYOROF # z = input', '', 'rz1 # konversikan input ke huruf besar', 'cd # split input pada spasi', 'c4." ANDBYOROF # buat daftar kata dari paket. string yang harus diabaikan ',' - # saring kata-kata itu ',' hM # hanya mengambil huruf pertama dari semua kata ',' s # gabung menjadi satu string '], "#" -> [' shM-crz1dc4 . "ANDBYOROF # z = input ',' ',' rz1 # konversikan input ke huruf besar ',' cd # pisahkan input pada spasi ',' c4." ANDBYOROF # buat daftar kata dari string yang dikemas yang harus ' , '# diabaikan', '- # filter kata-kata itu ',' hM # hanya ambil huruf pertama dari semua kata ',' s # gabung menjadi satu string '] ['codecodecode e # Penjelasan', 'sdf dsf sdf e # A Sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat lama sangat lama sangat lama sangat panjang sangat lama sangat lama penjelasan panjang dan itu terus semakin lama', '', 'beberapa lebih banyak codee # dan lebih banyak penjelasan '], "e #" -> [' codecodecode e # Penjelasan ',' sdf dsf sdf e # A Sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat lama sangat lama sangat lama ',' e # panjang panjang penjelasan panjang dan panjang terus bertambah ',' e # dan lebih lama ',' ',' beberapa kode lagi e # dan beberapa penjelasan lainnya ']
Selamat Coding!
length of the longest code-line + 5
. Ini juga berlaku untuk garis yang hanya berisi penjelasan, karena dibungkus.