สัปดาห์ก่อนหน้านี้เราได้เรียนรู้เกี่ยวกับวิธีจัดรูปแบบภาษาลึกลับเพื่อแสดงความคิดเห็น วันนี้เราจะทำอินเวอร์สของสิ่งนั้น ฉันต้องการให้คุณเขียนโปรแกรมหรือฟังก์ชั่นที่แยกวิเคราะห์รหัสลับที่มีความคิดเห็นดีและแยกวิเคราะห์ความคิดเห็นโดยส่งคืนรหัส โดยใช้ตัวอย่างจากการท้าทายครั้งก่อนนี่คือสิ่งที่โค้ดที่มีความคิดเห็นดีมีลักษณะ:
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
นี่คือสิ่งที่คุณต้องทำเพื่อแยกรหัสออก ก่อนอื่นให้ลบตัวอักษรความคิดเห็น ( #
) ช่องว่างข้างหน้าและทุกอย่างที่อยู่หลังตัวอักขระความคิดเห็น
a
bc
d
e
fgh
ij
k
l
mn
op
จากนั้นยุบแต่ละบรรทัดขึ้นไปเป็นบรรทัดเดียว ยกตัวอย่างเช่นตั้งแต่b
อยู่ในคอลัมน์ที่สองในบรรทัดที่สองเมื่อเรายุบมันขึ้นมันจะอยู่ในคอลัมน์ที่สองในบรรทัดหนึ่ง ในทำนองเดียวกันc
จะถูกวางในคอลัมน์ที่สามของหนึ่งบรรทัดและd
จะถูกวางในสี่ ทำซ้ำสำหรับตัวละครทุกตัวและคุณจะได้รับ:
abcdefghijklmnop
หมายเหตุสำคัญ: ดูเหมือนวิธีแก้ปัญหาเล็กน้อยคือเพียงลบความคิดเห็นลบทุกพื้นที่และเข้าร่วมทุกบรรทัด นี่ไม่ใช่วิธีการที่ถูกต้อง! เนื่องจากรหัสต้นฉบับอาจมีช่องว่างอยู่รหัสเหล่านี้จะถูกขีดทับด้วยวิธีการนี้ ตัวอย่างเช่นนี่เป็นอินพุตที่ถูกต้องสมบูรณ์:
hello #Line one
#Line two
world! #Line three
และผลลัพธ์ที่สอดคล้องกันควรเป็น:
hello world!
ความท้าทาย:
เขียนโปรแกรมหรือฟังก์ชั่นที่รับรหัสความคิดเห็นเป็นอินพุตและส่งออกหรือส่งคืนรหัสที่มีความคิดเห็นทั้งหมดแยกออกจากมัน คุณควรส่งออกรหัสโดยไม่มีช่องว่างต่อท้ายแม้ว่าบรรทัดใหม่ต่อท้ายหนึ่งบรรทัดจะได้รับอนุญาต อักขระความคิดเห็นจะเป็น#
และจะมีที่ว่างหนึ่งช่องเสมอก่อนที่ความคิดเห็นจะเริ่ม #
จะไม่ปรากฏในส่วนความคิดเห็นของอินพุต เพื่อให้การท้าทายง่ายขึ้นต่อไปนี้เป็นอินพุตที่คุณไม่ต้องจัดการ:
คุณสามารถสมมติว่ารหัสจะไม่มีอักขระสองตัวในคอลัมน์เดียวกัน ตัวอย่างเช่นนี่เป็นอินพุตที่ละเมิดกฎนี้:
a #A character in column one bc #Characters in columns one and two
คุณสามารถสันนิษฐานได้ว่าตัวอักษรความคิดเห็นทั้งหมดปรากฏในคอลัมน์เดียวกัน ตัวอย่างเช่นอินพุตนี้:
short #this is a short line long #This is a long line
ละเมิดกฎนี้ นี่ก็หมายความว่า
#
จะไม่อยู่ในส่วนของรหัสและสุดท้ายคุณไม่จำเป็นต้องจัดการส่วนของรหัสด้วยช่องว่างนำหน้าหรือต่อท้าย ตัวอย่างเช่น,
Hello, # World! #
คุณอาจสมมติว่าอินพุตมีอักขระ ASCII ที่พิมพ์ได้เท่านั้น
ตัวอย่าง:
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!
คุณสามารถป้อนข้อมูลในรูปแบบที่สมเหตุสมผลเช่นรายการของสตริงสตริงเดี่ยวที่มีบรรทัดใหม่รายการอักขระ 2d ฯลฯ คำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ!
hello world!
คุณแสดง) นอกจากนี้คุณระบุว่า: " #
จะไม่ปรากฏในส่วนความคิดเห็นของอินพุต " แต่จะเกิดขึ้นในโค้ด - โค้ดเองได้หรือไม่
do {stuff} while (condition);
มีคำอธิบายในการสั่งซื้อแล้วdo while (condition); #Explainything
{stuff} #Explainything