স্ট্যাক বিড়ালগুলি একটি বিপরীতমুখী, স্ট্যাক-ভিত্তিক ভাষা। এর বিপরীতমুখী প্রকৃতি কিছুটা অদ্ভুত লুপ তৈরি করে। এই চ্যালেঞ্জ শর্তসাপেক্ষ লুপ সম্পর্কে (...)
। যখন এই লুপগুলি নির্দিষ্ট উপায়ে বাসা বাঁধে, নীড়ের গভীরতা হ্রাস করার জন্য কোডটিকে রূপান্তর করা সম্ভব। এখানে বিধিগুলি রয়েছে (যেখানে A
এবং B
স্বেচ্ছাসেবীর স্নিপেটগুলির পক্ষে দাঁড়ান):
- যখন একটি লুপ অন্য লুপ দিয়ে শুরু হয়, আমরা সামনের অভ্যন্তরীণ লুপটি বের করতে পারি:
((A)B)
হয়ে যায়(A)(B)
। - যখন একটি লুপ অন্য লুপের সাথে শেষ হয়, আমরা অন্তঃস্থ লুপটি শেষ পর্যন্ত বের করতে পারি:
(B(A))
হয়ে যায়(B)(A)
। - খালি লুপগুলি,
()
পুরোপুরি প্রোগ্রাম থেকে সরানো যায়। একটি তাত্পর্য হিসাবে (অন্যান্য নিয়মের সাথে একত্রে),((A))
সমতুল্য(A)
।
শুধুমাত্র নেস্টেড loops যে থাকবে ফর্ম হয় (A(B)C)
, যেখানে A
, B
এবং C
অ খালি আছে।
চ্যালেঞ্জ
আপনাকে একটি বৈধ স্ট্যাক বিড়াল প্রোগ্রাম দেওয়া হয়েছে এবং আপনার কাজটি উপরের ট্রান্সফর্মেশনগুলি ব্যবহার করে ফাঁকা ফাঁকা ফাঁকা রেখে যতটা সম্ভব নীচের নীড়ের স্তর হ্রাস করা।
একটি বৈধ স্ট্যাক বিড়াল প্রোগ্রাম ...
- ... শুধুমাত্র চরিত্র নিয়ে গঠিত
()/\<>[]{}!"*+-:=ITX^_|
। - ... আয়না প্রতিসাম্য রয়েছে (যেমন
\(]{}!{}[)/
একটি বৈধ প্রোগ্রাম, তবে/|/
তা নয়)। - ... সঠিকভাবে মিলেছে হয়েছে এবং নেস্টেড
()
এবং{}
([]
,<>
এবং\/
যদিও তারা মিরর প্রতিসাম্য প্রয়োজন কারণে জোড়া প্রদর্শিত হবে অগত্যা যথারীতি মিলেছে করা প্রয়োজন হবে না)।
আপনি ইনপুট হিসাবে স্ট্রিং বা অক্ষরের একটি তালিকা নিতে পারেন, তবে আউটপুট একই বিন্যাসে উপস্থাপন করা দরকার।
আপনি কোনও প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন এবং ইনপুট গ্রহণ এবং আউটপুট সরবরাহের আমাদের মানক পদ্ধতির কোনওটি ব্যবহার করতে পারেন । নোট করুন যে এই ফাঁকগুলি ডিফল্টরূপে নিষিদ্ধ করা হয়েছে।
এটি কোড-গল্ফ , তাই সংক্ষিপ্ততম বৈধ উত্তর - বাইটগুলিতে মাপা - জয় w
পরীক্ষার কেস
পরীক্ষার কেস দুটি খালি লাইন দ্বারা পৃথক পৃথক (ইনপুট এবং আউটপুট) দুটি লাইন হয়। মনে রাখবেন যে একটি আউটপুট খালি। আপনাকে খালি ইনপুটটিও সমর্থন করতে হবে (যার ফলে খালি আউটপুট আসতে হবে)।
(((=+|+=)))
(=+|+=)
({(=+|+=)})
({(=+|+=)})
((\)/)I(\(/))
(\)(/)I(\)(/)
(()()(())()())
((<|>((X((T)))[_]))\^/(([_](((T))X))<|>))
(<|>)(X)(T)([_])(\^/)([_])(T)(X)(<|>)
(...)
টাইপ লুপগুলির জন্য বৈধ ।
\^/
বন্ধনী ভিতরে কেন ?
(<|>((X((T)))[_]))
এবং (([_](((T))X))<|>)
।
((A)B(C))
হয়ে যাবে (A)(B)(C)
: ((A)B(C))
→ (A)(B(C))
(বিধি 1) → (A)(B)(C)
(বিধি 2)।
()
, সুতরাং একটি ইনপুট{{A}B}
যেমন থাকবে তেমন থাকবে এবং তাও সরানো হবে না{A}{B}
?