Kotak ASCII terlihat seperti ini:
++ +---+ +------+ +---+ +---+
++ | | | | | | | |
| | | | | | | |
+-+ | | | | | | | |
+-+ | | | | | | +---+
+---+ | | | |
+--+ | | | | ++
| | | | | | ||
| | +------+ | | ||
+--+ | | ||
+---+ ||
||
+-----+ ||
+------------+ | | ++
| | | |
| | | |
+------------+ +-----+
Berikut adalah beberapa contoh kotak ASCII yang sama, meledak:
++ +- -+ +- -+ +- -+ +- -+
++ | - | | - - | | - | | - |
| | | -- | | | | |
+-+ | | | | " | - |
+-+ | - | || | | +- -+
+- -+ | | | |
+--+ | -- | | | ++
| | | - - | " ||
| | +- -+ | | ||
+--+ | - | | |
+- -+ | |
-- ||
- - +- -+ ||
+- - - -+ | - - | ++
| -- -- | | = |
| -- -- | | - - |
+- - - -+ +- -+
- -
--
Sini ini tautan ke semua kotak uji ini dalam format yang lebih mudah disalin. Urutannya adalah semua input diikuti oleh semua output dalam urutan yang sama.
Tujuan Anda adalah untuk mengambil kotak ASCII sebagai input, dan mengembalikan kotak yang meledak. Aturan ledakan adalah:
- "+" tidak pernah berubah; tidak melakukan "-" atau "|" berbatasan langsung dengan "+"
- Mulai dari sudut, "-" dan "|" bergerak ke dalam oleh satu spasi lebih dari karakter yang sama lebih dekat ke sudut itu. Jika "-" dan "|" akan pernah pindah ke tempat yang sama, tidak bergerak.
- Jika "-" dan "-" pindah ke tempat yang sama, letakkan "=" di tempat itu. Jika "|" dan "|" pindah ke tempat yang sama, letakkan "di tempat itu. Ini dihitung sebagai dua karakter masing-masing di tempat yang sama bergerak dalam arah yang berlawanan.
- Dua "-" atau dua "|" dapat bergerak melewati satu sama lain, seperti yang terlihat di contoh kiri bawah.
- Jika kotaknya cukup kurus, itu akan mulai mengembang ke arah luar dengan cara yang sama, selalu menjauh dari sisi yang dimulai dari bagian itu.
- Hasilnya harus simetris di garis tengah di kedua arah x dan y (mengabaikan baris baru); ini termasuk spasi, jadi hasilnya mungkin perlu diisi dengan spasi untuk memenuhi itu.
Detail Aturan:
- Ini adalah kode-golf, jadi program terpendek dalam byte menang.
- Celah standar berlaku.
- Anda dapat mengasumsikan setiap baris berakhir dengan karakter baris baru.
- Satu-satunya karakter dalam string input adalah "+", "-", "|", "", dan "\ n" (baris baru), dan string output Anda harus mengikuti aturan yang sama, dengan penambahan "=" dan "sebanyak mungkin karakter.
- Secara opsional, Anda dapat memiliki satu baris baru di akhir baris terakhir.
- Kotak ASCII terkecil yang perlu Anda tangani adalah contoh kiri atas. Setiap kotak ASCII akan memiliki tepat 4 "+", tepat di sudutnya.
- Anda perlu menangani kotak ukuran
m x nuntuk bilangan bulat apa punm,nsehingga2<=m,n<256(ukuran string sebesar mungkin255*(255+1)) - Anda dapat menganggap Anda akan selalu mendapatkan satu kotak ASCII yang valid sebagai input.
||dalam contoh itu harus menjadi "atau sesuatu ...
"? Saya kira "hanya muncul pada 3-lebar atau lebih besar?
"? Di sebelah kiri, atau di sebelah kanan? Tidak bisa keduanya, tetapi tidak bisa karena hasilnya simetris.