इस सप्ताह की शुरुआत में, हमने टिप्पणी करने के लिए गूढ़ भाषाओं को प्रारूपित करने के बारे में सीखा । आज, हम इसका उलटा करने जा रहे हैं। मुझे आपको एक प्रोग्राम या फ़ंक्शन लिखने की ज़रूरत है जो कुछ अच्छी तरह से टिप्पणी किए गए गूढ़ कोड को पार्स करता है और टिप्पणियों को पूरी तरह से पार्स करता है, बस कोड को वापस करता है। पिछली चुनौती से कुछ उदाहरणों का उपयोग करते हुए, यहाँ पर अच्छी तरह से टिप्पणी की गई कोड की तरह दिखता है:
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!
आप जो भी उचित प्रारूप पसंद करते हैं उसमें इनपुट ले सकते हैं, उदाहरण के लिए, स्ट्रिंग्स की एक सूची, न्यूलाइन के साथ एक स्ट्रिंग, पात्रों की 2 डी सूची, आदि। बाइट्स जीत में सबसे छोटा उत्तर!
hello world!
आपने दिखाया है) के साथ परीक्षण मामले को जोड़ सकते हैं ? इसके अलावा, आप बताते हैं: " #
इनपुट के टिप्पणी अनुभाग में दिखाई नहीं देगा। ", लेकिन क्या यह कोड-स्निपेट में ही हो सकता है?
do {stuff} while (condition);
क्रम में स्पष्टीकरण के साथ । do while (condition); #Explainything
{stuff} #Explainything