Saya selalu ingin mengelilingi beberapa teks dengan #
s, tetapi saya mengalami kesulitan mencari tahu apa yang saya dikelilingi sehingga dalam tantangan ini Anda akan menulis sebuah program untuk melakukan hal itu
Contohnya
Input / Output dipisahkan oleh baris baru.
###
#a#
###
a
#
#a#
#
a
###
# a #
# b c #
#######
a
b c
ABCDHIJ
E####GK
F# M #L
# N#O
P####
M
N
###A###
#C#B#o#
#d###e#
# go#
###
C o
d e
go
Spec
#
s adalah apa yang "mengelilingi" blok teks#
akan selalu berdekatan satu sama lain (termasuk secara diagonal)#
akan selalu membentuk bentuk tertutup- Hanya akan ada satu
#
bentuk - Dalam hal bentuk cekung, lubang harus diisi dengan ruang.
- Spasi harus disimpan dalam output
#
dan di sana Anda pergi ... dan kemudian menjadi sulit.\n
setelah setiap baris input dan dilewatkan sebagai parameter fungsi untuk program saya atau apa?_M_\n___N
(menggunakan garis bawah alih-alih spasi karena masalah pemformatan), sedangkan dalam contoh abc dan Codego output juga termasuk spasi putih di mana #s berada di input. Jika hanya teks yang dikelilingi oleh #s yang akan dicetak, maka output dari contoh abc harus_a_\n_b_c_
(bukan__a_\n_b_c
) dan output dari contoh Codego harusCo\nde\n_go
(bukanC___o\nd___e\n__go
).MN
contohnya. karena seharusnya tidak ada ruang ekstra setelah M.Jawaban:
Perl,
144138132129128127126124 byteTermasuk +2 untuk
-p0
Kode menganggap
\0
bukan karakter input yang valid (setidaknya di dalam#
).Jalankan dengan input pada STDIN:
surround.pl
:Kode berfungsi sebagaimana adanya, tetapi ganti
\0
dan\n
dengan versi literalnya untuk skor yang diklaim. Perhatikan ada spasidi ujung garis. Kode loop terlalu sering, jadi Anda mungkin harus menunggu sekitar 30 detik untuk output.
Penjelasan
Saya akan melakukan penimbunan dengan
\0
mampir#
dari luar ke arah orthogonal. Setelah itu saya akan mengiris#
sisi dan mengganti semua yang tersisa oleh spasi. Untuk menghindari harus menangani semua arah di TPA saya akan berulang kali memutar area target dan hanya mengisi TPA dari kanan ke kiriPada titik ini mis
akan diganti oleh:
Pada dasarnya semua kolom dan baris yang tidak berbatasan langsung dengan bagian dalam telah dipotong. Setiap karakter luar yang tersisa telah diganti oleh \ 0. Di bagian atas dan kanan ada lapisan ekstra \ 0. Jadi yang tersisa hanyalah pembersihan:
sumber
#
dilucuti. harap verifikasi sesi bash saya: codepad.org/YbCzB4O4Javascript,
485 464 427 417 396390 byteIya. Saya mencoba. Dan, meskipun saya berada di
485byte, saya menang karena tidak ada orang lain yang ingin menjawab pertanyaan ini. Jadi, hah!Dan juga, saya sangat sadar bahwa saya bisa bermain golf ini, saya hanya lelah saat ini ... nah sekarang saya di 396 Terima kasih kepada Conor untuk sebagian besar bermain golf ...: D
sumber
y=z=0