পটভূমি
(একটি সত্য, হৃদয় ছড়িয়ে দেওয়া গল্পের উপর ভিত্তি করে)
আমার সময়ে, আমি প্রায়শই লিস্প এবং অনুরূপ ভাষার সাথে প্রায় খেলেছি। আমি তাদের সাথে লিখেছি, তাদের চালিয়েছি, তাদের ব্যাখ্যা করেছি, তাদের ডিজাইন করেছি, এবং মেশিনগুলি তাদের সাথে আমার জন্য লেখার জন্য তৈরি করেছি ... এবং যদি আমাকে বিরক্ত করার মতো একটি জিনিস থাকে তবে এটি লিস্পকে দেখছে যা আমার নির্দিষ্ট বিন্যাসের শৈলী মেনে চলে না।
দুর্ভাগ্যক্রমে, কিছু পাঠ্য সম্পাদক ( কাশি এক্সকোড কাশি ) যখনই কোড অনুলিপি এবং পেস্ট করা হচ্ছে তখন আমার সুন্দর ট্যাবগুলি এবং স্পেসগুলি সরিয়ে ফেলেন ... সুন্দরভাবে ব্যবধানযুক্ত লিস্পের মতো সিনট্যাক্সটি নিন:
(A
(B
(C)
(D))
(E))
( ABCDE
স্বেচ্ছাসেবী কর্ম কোথায় )
কিছু পাঠ্য সম্পাদকরা নীচের প্রান্তে এই সুন্দর কোডটি কসাইছেন:
(A
(B
(C)
(D))
(E))
কী এলোমেলো! তা পাঠযোগ্য নয়!
এখানে আমাকে সাহায্য করুন?
চ্যালেঞ্জ
এই চ্যালেঞ্জের আপনার লক্ষ্যটি হ'ল নীচে বর্ণিত একটি ফর্ম্যাটে নিউলাইন দ্বারা পৃথক করা বিভিন্ন ক্রিয়াকলাপ গ্রহণ করা এবং আরও সুন্দর বিন্যাস ফিরিয়ে দেওয়া যা পাঠযোগ্যতা এবং কমনীয়তা হাইলাইট করে।
ইনপুট
আমরা F
আরটি N
আর্গুমেন্টগুলির একটি ক্রিয়াকে নিম্নলিখিতের অনুরূপ নির্মাণ হিসাবে সংজ্ঞায়িত করি :
(F (G1 ...) (G2 ...) (G3 ...) ... (GN ...))
যেখানে G1, G2, ..., GN
সমস্ত কার্য নিজের মধ্যে রয়েছে themselves একটি আরটি 0
ফাংশন A
সহজভাবে হয় (A)
, যখন একটি আরটি 2
ফাংশন B
ফর্মের হয়(B (...) (...))
আপনার কোডটি প্রতিটি ফাংশনের শীর্ষস্থানীয় প্রথম বন্ধনী (প্রথম ফাংশন ব্যতীত) এর আগে একক নিউলাইন সহ ফাংশনের একটি সিরিজ হিসাবে ইনপুট নেওয়া উচিত। উপরের উদাহরণটি বৈধ ইনপুট।
আপনি ধরে নিতে পারেন:
- প্রথম বন্ধনী সুষম হয়।
- কোনও ক্রিয়াকলাপটি কখনই 250 এর বেশি বার চাপতে হবে না।
- প্রতিটি ফাংশন বন্ধনী দ্বারা বেষ্টিত:
()
- কোনও ফাংশনটির নামটিতে কেবল ছাপাযোগ্য ASCII অক্ষর থাকবে।
- কোনও ফাংশনের নামে কখনই প্রথম বন্ধনী বা স্পেস থাকবে না।
- ইনপুটটিতে একটি alচ্ছিক ট্রেলিং নিউলাইন রয়েছে।
আউটপুট
আপনার কোডগুলিতে একই ফাংশনের সেট আউটপুট করা উচিত , যেখানে কেবলমাত্র পরিবর্তনগুলি ফাংশনগুলির শীর্ষস্থানীয় বন্ধনীগুলির আগে স্পেস বা ট্যাবগুলির সংযোজন। আউটপুট নিম্নলিখিত নিয়ম মেনে চলতে হবে:
- প্রদত্ত প্রথম ফাংশন (এবং পরে শীর্ষ-স্তরের ফাংশন) এর পূর্ববর্তী স্থান থাকা উচিত নয়
- কোনও ফাংশনের অনুভূমিক অবস্থানের জন্য একটি যুক্তি হ'ল ফাংশনের অনুভূমিক অবস্থানের ডানদিকে এক ট্যাব।
- একটি ট্যাব বাস্তবায়ন-সংজ্ঞায়িত, তবে কমপক্ষে 3 টি স্পেস থাকতে হবে।
- আপনি প্রতিটি লাইনের পরে সর্বোচ্চ দুটি স্পেস optionচ্ছিকভাবে মুদ্রণ করতে পারেন।
বিধি
- এটি কোড-গল্ফ: সংক্ষিপ্ততম কোড জিতেছে!
- স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়।
উদাহরণ
ইনপুট:
(A
(B
(C)
(D))
(E))
আউটপুট:
(A
(B
(C)
(D))
(E))
ইনপুট:
(!@#$%^&*
(asdfghjklm
(this_string_is_particularly_long
(...))
(123456789)))
(THIS_IS_TOP_LEVEL_AGAIN
(HERE'S_AN_ARGUMENT))
আউটপুট:
(!@#$%^&*
(asdfghjklm
(this_string_is_particularly_long
(...))
(123456789)))
(THIS_IS_TOP_LEVEL_AGAIN
(HERE'S_AN_ARGUMENT))
ইনপুট:
(-:0
(*:0
(%:0
(Arg:6)
(Write:0
(Read:0
(Arg:30))
(Write:0
(Const:-6)
(Arg:10))))
(%:0
(Const:9)
(/:0
(Const:-13)
(%:0
(Arg:14)
(Arg:0)))))
(WriteArg:22
(-:0
(Const:45)
(?:0
(Arg:3)
(Arg:22)
(Arg:0)))))
আউটপুট:
(-:0
(*:0
(%:0
(Arg:6)
(Write:0
(Read:0
(Arg:30))
(Write:0
(Const:-6)
(Arg:10))))
(%:0
(Const:9)
(/:0
(Const:-13)
(%:0
(Arg:14)
(Arg:0)))))
(WriteArg:22
(-:0
(Const:45)
(?:0
(Arg:3)
(Arg:22)
(Arg:0)))))
()
?