এই সপ্তাহের শুরুতে, আমরা কীভাবে মন্তব্য করার জন্য মূল ভাষাগুলি ফর্ম্যাট করবেন তা শিখেছি । আজ, আমরা এর বিপরীতমুখী করতে যাচ্ছি। আমার আপনার এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা কিছু ভাল মন্তব্য করা এসোটেরিক কোডকে পার্স করে এবং মন্তব্যগুলিকে পার্স করে, কেবল কোডটি ফিরিয়ে দেয়। পূর্ববর্তী চ্যালেঞ্জের কয়েকটি উদাহরণ ব্যবহার করে, এখানে ভাল-মন্তব্য করা কোডের মত দেখাচ্ছে:
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!
চ্যালেঞ্জ:
এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা মন্তব্য কোডকে ইনপুট হিসাবে গ্রহণ করে এবং এতে আউটপুট দেয় বা সমস্ত মন্তব্যকে পার্স করে দিয়ে কোড দেয় returns কোনও পেছনের ফাঁকা জায়গা ছাড়াই আপনার কোড আউটপুট করা উচিত , যদিও একের পরের লাইনে প্রবেশযোগ্য। মন্তব্যের চরিত্রটি সর্বদা থাকবে #
এবং মন্তব্যগুলি শুরু হওয়ার আগে সর্বদা একটি অতিরিক্ত স্থান থাকবে। ইনপুটটির মন্তব্য বিভাগে উপস্থিত #
হবে না । চ্যালেঞ্জটি সহজ রাখার জন্য, এখানে কয়েকটি ইনপুট আপনাকে পরিচালনা করতে হবে না :
আপনি ধরে নিতে পারেন যে কোডটিতে একই কলামে দুটি অক্ষর থাকবে না। উদাহরণস্বরূপ, এটি এমন একটি ইনপুট যা এই বিধি লঙ্ঘন করে:
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
।