Alice adalah pekerja magang di perusahaan yang menggunakan Brainfuck sebagai bahasa utama untuk pengembangan sisi klien dan server. Alice baru saja menulis kode pertamanya dan dia sedikit gugup saat dia bersiap-siap untuk tinjauan kode pertamanya.
Alice ingin membuat kodenya diformat dengan benar dan terlihat bagus, tetapi dia tidak punya waktu untuk membaca panduan gaya kode perusahaan setebal 328 halaman, jadi dia memutuskan untuk memformatnya sebagai kotak yang sempurna . Sayangnya, panjang kode mungkin tidak cukup untuk membentuk persegi, jadi dia memutuskan untuk meninggalkan celah persegi di tengah. Kesenjangan harus dipusatkan dengan sempurna dan sedekat mungkin dengan kotak .
Contohnya
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
Tulis program atau fungsi untuk membantu Alice. Diberikan kode Alice sebagai string input, output kode diformat dengan benar seperti yang dijelaskan di bawah jika memungkinkan. Jika memformat tidak mungkin, keluarkan emoji menangis :~(
.
Ini adalah kode-golf sehingga jawaban diberi skor dalam byte dengan tujuan lebih sedikit.
Kendala
- Program atau fungsi Anda harus mengambil string tunggal sebagai input dan output satu atau lebih baris teks (atau mengembalikan string multi-baris atau array string, jika Anda mengimplementasikan suatu fungsi).
- String input dapat berisi karakter ASCII termasuk spasi putih.
- Semua spasi putih dalam input harus diabaikan. Mereka tidak harus menghitung panjang kode dan mereka tidak boleh digunakan dalam output.
- String input berisi setidaknya satu karakter non-spasi putih.
- Kode yang diformat harus memiliki karakter bukan spasi yang sama dalam urutan yang sama seperti dalam kode input.
- Kode yang diformat harus berupa kuadrat sempurna, yaitu semua garis harus memiliki panjang yang sama, dan jumlah garis harus sama dengan panjang garis.
- Kode yang diformat mungkin mengandung celah di tengah.
- Hanya karakter spasi (kode ASCII 32) yang dapat digunakan dalam jeda.
- Celah (jika ada) harus persegi panjang.
- Setiap baris kode yang diformat harus mengandung setidaknya satu karakter non-spasi, yaitu lebar celah harus benar-benar kurang dari lebar kuadrat (celah 5x1 tidak dapat diterima untuk 5x5 kuadrat).
- Celah harus horisontal, yaitu lebar celah harus lebih besar atau sama dengan tinggi celah.
- Celah harus terpusat sempurna.
- Konsekuensinya, lebar celah dan paritas tinggi harus sama dengan paritas lebar persegi (misalnya untuk 5x5, celah persegi bisa 1x1, 3x1, atau 3x3).
- Jika memungkinkan, kuadrat keluaran tanpa celah sama sekali.
- Dalam hal beberapa solusi, pilih satu dengan gap yang paling dekat dengan kuadrat, yaitu perbedaan antara lebar celah dan tinggi celah minimal (misalnya: gap 10x10 lebih disukai daripada 8x6, dan 8x6 lebih disukai daripada 6x2).
- Jika masih ada seri, pilih solusi dengan area gap minimal (misalnya gap 2x2 lebih disukai daripada 4x4).
- Jika tidak mungkin memformat kode sama sekali, output
:~(
. - Baris baru setelah baris terakhir adalah opsional.
- [Baru] Anda dapat dengan aman berasumsi bahwa karakter apa pun dengan kode di bawah 33 adalah spasi. Saya harap ini akan membantu Anda untuk bermain golf.
Tes
Input Output Code length Comment
+++++++++ +++ 9 Alice is lucky,
+++ her code perfectly fits a square.
+++
++++++++ +++ 8 Though code length isn't enough for a square,
+ + a small gap fixes it.
+++
++++++ :~( 6 No luck, code cannot be formatted.
Hello, Hell 12 Input may contain any ASCII characters,
World! o , but whitespaces in input should be ignored.
W o
rld!
+++++ + +++++ +++++ 22 Gap is not required to be a square,
+++++ + +++++ +++++ it can be a rectangle.
+ +
+++++
+++++
+++ + +++ ++++++++ 28 There exists another solution:
+++ + +++ + + 6x6 square with 4x2 gap,
+++ + +++ + + but in Alice's opinion square gap
+++ + +++ + + makes code more readable.
+ +
+ +
+ +
++++++++
Tes rumit
This must be Thism 24 7x7 with 5x5 gap looks good,
5x5 with 1x1 ustbe but 5x5 with 1x1 gap is better,
gap. 5x 5w because gap area is smaller.
ith1x
1gap.
+++ +++ +++ :~( 18 In case you tried 5x5 square
+++ +++ +++ with 7x1 gap ;)
Sumber daya
Untuk menghemat ruang, Anda dapat menemukan kode sampel dan kasus uji tambahan di tio.run
[Baru] Anda dapat melihat tabel solusi yang diterima untuk input hingga 100 karakter . Saya menukar lebar dan tinggi karena sepertinya terlihat lebih intuitif.
Terinspirasi oleh: Seperempat teks
Perubahan
Menambahkan 2 tes, memperbaiki bug dalam kode sampel.
Menambahkan tabel solusi hingga 100, menambahkan klarifikasi ruang-putih.