Awal minggu ini, kami belajar tentang cara memformat bahasa esoterik untuk berkomentar. Hari ini, kita akan melakukan kebalikannya. Saya ingin Anda menulis sebuah program atau fungsi yang mem-parsing beberapa kode esoterik yang dikomentari dengan baik dan mem-parsing komentar, hanya mengembalikan kode. Dengan menggunakan beberapa contoh dari tantangan sebelumnya, di sini terlihat seperti apa kode yang dikomentari dengan baik:
a #Explanation of what 'a' does
bc #Bc
d #d
e #Explanation of e
fgh #foobar
ij #hello world
k #etc.
l #so on
mn #and
op #so forth
Inilah yang perlu Anda lakukan untuk mengekstrak kode. Pertama, hapus karakter komentar ( #
), spasi sebelum, dan semuanya setelah karakter komentar.
a
bc
d
e
fgh
ij
k
l
mn
op
Kemudian, pisahkan setiap baris ke atas menjadi satu baris. Misalnya, karena b
berada di kolom kedua di baris dua, setelah kami menutupnya, itu akan berada di kolom kedua di baris pertama . Demikian pula, c
akan diletakkan di kolom ketiga baris satu, dan d
akan diletakkan di keempat. Ulangi ini untuk setiap karakter, dan Anda mendapatkan ini:
abcdefghijklmnop
Catatan penting: Sepertinya solusi sepele adalah dengan hanya menghapus komentar, menghapus setiap spasi, dan bergabung dengan setiap baris. Ini bukan pendekatan yang valid! Karena kode asli mungkin memiliki spasi di dalamnya, ini akan dihapus dengan pendekatan ini. Misalnya, ini adalah input yang benar-benar valid:
hello #Line one
#Line two
world! #Line three
Dan output yang sesuai harus:
hello world!
Tantangan:
Tulis program atau fungsi yang mengambil kode komentar sebagai input, dan mengeluarkan atau mengembalikan kode dengan semua komentar diuraikan darinya. Anda harus mengeluarkan kode tanpa spasi tambahan, meskipun satu baris tambahan diizinkan. Karakter komentar akan selalu ada #
, dan akan selalu ada satu ruang ekstra sebelum komentar dimulai. tidak#
akan muncul di bagian komentar dari input. Agar tantangannya lebih sederhana, berikut adalah beberapa input yang tidak harus Anda tangani:
Anda dapat mengasumsikan bahwa kode tidak akan memiliki dua karakter di kolom yang sama. Misalnya, ini adalah input yang melanggar aturan ini:
a #A character in column one bc #Characters in columns one and two
Anda juga dapat mengasumsikan bahwa semua karakter komentar muncul di kolom yang sama. Misalnya, input ini:
short #this is a short line long #This is a long line
melanggar aturan ini. Ini juga berarti bahwa
#
tidak akan ada di bagian kode.Dan terakhir, Anda tidak harus menangani bagian kode dengan spasi awal atau akhir. Sebagai contoh,
Hello, # World! #
Anda juga dapat mengasumsikan bahwa input hanya berisi karakter ASCII yang dapat dicetak.
Contoh:
Input:
hello #Line one
#Line two
world! #Line three
Output:
hello world!
Input:
E #This comment intentionally left blank
ac #
h s #
ecti #
on is #
one c #
haracte #
r longer #
than the #
last! #
Output:
Each section is one character longer than the last!
Input:
4 #This number is 7
8 #
15 #That last comment is wrong.
16 #
23 #
42 #
Output:
4815162342
Input:
Hello #Comment 1
world #Comment 2
, #Comment 3
how #Comment 4
are #Comment 5
you? #Comment 6
Output:
Hello world, how are you?
Input:
Prepare #
for... #
extra spaces! #
Output:
Prepare for... extra spaces!
Anda dapat mengambil input dalam format beralasan apa pun yang Anda suka, misalnya, daftar string, string tunggal dengan baris baru, daftar karakter 2d, dll. Jawaban terpendek dalam byte menang!
hello world!
Anda tunjukkan)? Selain itu, Anda menyatakan: " #
tidak akan muncul di bagian komentar dari input. ", Tetapi bisakah itu terjadi di cuplikan-kode itu sendiri?
do {stuff} while (condition);
dengan penjelasan dalam urutan do while (condition); #Explainything
kemudian {stuff} #Explainything
.