Seni ASCII itu menyenangkan. Editor teks modern sangat pandai memanipulasi teks. Apakah bahasa pemrograman modern sesuai dengan tugasnya?
Satu tugas umum dalam manipulasi seni ASCII adalah memotong teks menjadi persegi panjang di antara dua karakter. Ini adalah tugas yang harus Anda laksanakan dalam tantangan ini.
Detail
Program Anda akan mengambil 3 input:
- yang pertama adalah karakter 'awal' dari blok - menandai sudut kiri atas
- yang kedua adalah karakter 'ujung' dari blok - menandai sudut kanan bawah
- yang ketiga adalah beberapa bentuk teks multiline, baik string, atau daftar string, atau nama file, atau apa pun
Hasilnya akan berupa teks multiline (sekali lagi, dalam salah satu format di atas) yang dipangkas menjadi persegi panjang di antara input yang diberikan. Perhatikan bahwa dua input pertama mungkin tidak unik.
Kasus tepi
Kotak harus selalu memiliki volume setidaknya 2. Dengan demikian:
() (
)
adalah kotak tetapi ini:
)( ) (
( )
tidak (dengan mulai = (dan akhir = )).
Input hanya akan berisi satu kotak. Dengan demikian karakter awal dan akhir hanya boleh muncul sekali, kecuali mereka adalah karakter yang sama dalam hal ini mereka harus muncul tepat dua kali.
Selain itu setiap baris dalam input harus setidaknya sepanjang jarak dari awal garis ke tepi kanan kotak di input.
Program Anda tidak perlu menangani input yang tidak valid; mereka dapat mengakibatkan perilaku yang tidak terdefinisi.
Aturan
Aturan kode-golf berlaku. Kode terpendek menang.
Contohnya
Hari yang cerah: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
Keluaran:
(but this text
is in a box )
Perhatikan juga pengupasan ruang horizontal. Tanaman seni ASCII adalah 2d.
Hari hujan: start: ( end: ) input:
This is some text (
But is that even )
really a box?
Keluaran:
(
)
Awal / akhir yang sama: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
Keluaran:
/----------------------------\
| All this text is in a box! |
\----------------------------/
Masukan tidak valid: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
Input 2 tidak valid: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)