এটি একই নামের সাথে আমার পূর্ববর্তী মুছে ফেলা চ্যালেঞ্জের ভিত্তিতে তৈরি
ভূমিকা
আপনাকে এমন একটি প্রোগ্রাম লেখার দায়িত্ব দেওয়া হয়েছে যা ইনপুটটিতে তার সমস্ত এক্সএমএল-মতো 1 টি ট্যাগ যথাযথভাবে খোলা এবং বন্ধ করা হয়েছে এবং সঠিক ক্রমে থাকলে সত্য ভিত্তিক বা মিথ্যা মান দেয় । নিম্নলিখিতটি ইনপুট হিসাবে বিবেচনা করুন:
<Apple>
ট্যাগটি সঠিকভাবে বন্ধ না হওয়ায় এটি একটি মিথ্যা মান ফিরিয়ে আনবে। এই:
<Apple></Apple>
বিপরীতে সত্যবাদী মান দেয় কারণ এটি সঠিকভাবে বন্ধ রয়েছে। প্রোগ্রামটি নীড়যুক্ত ট্যাগগুলি সঠিক অবস্থানে রয়েছে তা নিশ্চিত করার জন্যও তাদের পরীক্ষা করা উচিত। উদাহরণস্বরূপ, এটিকে ইনপুট হিসাবে গ্রহণ করুন:
<mango><Apple></mango></Apple>
সমস্ত ট্যাগ সঠিকভাবে বন্ধ করা হয়েছে, তবে সঠিক ক্রমে নয় । আপনার প্রোগ্রামে অবশ্যই সঠিক ট্যাগ শ্রেণিবিন্যাস এবং বাসা বাঁধার জন্য চেক করতে হবে।
সংজ্ঞা
আমি নিয়ম এবং অনুমানের মধ্যে আসার আগে আমাকে কয়েকটি জিনিস সংজ্ঞা দিতে দিন Let
ট্যাগ
একটি প্রাথমিক XML- শৈলী ট্যাগ। উদাহরণস্বরূপ: <Apple>
। তাদের সর্বাধিক, একটি শীর্ষস্থানীয় এবং পিছনে স্থান থাকতে পারে (অন্যথায় এটি অবৈধ এবং মিথ্যা), তাই < Apple >
এবং <Apple>
একইরকম। এই ট্যাগ এছাড়াও মত বৈশিষ্ট্য ধারণ করতে পারে foo="bar"
(প্রয়োজন উদ্ধৃতি চিহ্ন, বা অন্য অবৈধ এবং falsey সঙ্গে) , এবং অ্যাট্রিবিউট নামে কেবল কোনো আলফানিউমেরিক অক্ষর বা ধারণ করতে পারে _
, :
, -
, এবং .
। অ্যাট্রিবিউটের নামগুলিতেও কোনও অ্যাট্রিবিউট মানের প্রয়োজন হয় না, এবং মানগুলি "
ক্লোজিং ডাবল উদ্ধৃতি ব্যতীত অন্য কোনও বিষয় থাকতে পারে । সমাপ্তি ট্যাগটিতে অবশ্যই কোনও বৈশিষ্ট্য থাকতে হবে এবং কোনও ট্যাগের মধ্যে নতুন লাইন থাকা উচিত নয়।
নাম যোগ করা
ট্যাগের নাম ট্যাগগুলির নাম। উদাহরণস্বরূপ, <Apple>
এর ট্যাগ নাম Apple
। ট্যাগের নামগুলিতে অ্যাট্রিবিউট নামের মতো একই অক্ষর থাকতে পারে এবং কেস সংবেদনশীল। এর অর্থ <Apple>
হয় না <apple>
।
স্ব-সমাপ্তি ট্যাগ
একটি নিয়মিত ট্যাগ যা নিজেকে বন্ধ করে দেয় যেমন ( <Apple />
বা <Apple/>
তারা একই)। স্ল্যাশ এবং ট্যাগ নামের মধ্যে স্থান অনুমোদিত।
সাধারণ পাঠ্য
অক্ষরগুলির একটি স্ট্রিং যাতে কোনও কিছু থাকতে পারে এবং এগুলি আবদ্ধ হয় না <
এবং >
।
"সরল" ট্যাগ
হয় কোনও উদ্বোধন, সমাপনী বা স্ব-সমাপনী ট্যাগ।
বিধি
- আউটপুট ফেরত বা মুদ্রিত হতে পারে এবং ইনপুট আপনার পছন্দ মতো কোনওভাবে নেওয়া যেতে পারে
- ইনপুট একটি স্ট্রিং, যা ট্যাগ, প্লেইন পাঠ্য বা উভয় সমন্বয়ে গঠিত
আপনার প্রোগ্রামটি কোনও ফাংশন বা পুরো কার্যকারী প্রোগ্রাম হতে পারে
সাধারণ পাঠ্য যে কোনও জায়গায় হতে পারে; যদি ইনপুটটিতে কেবল সরল পাঠ্য থাকে, প্রোগ্রামটি সত্যবাদী মানটি ফিরিয়ে আনতে হবে।
প্রোগ্রামটির জন্য নেস্টড ট্যাগগুলির স্বীকৃতি প্রয়োজন। যদি কোনও ট্যাগ কোনও ট্যাগে থাকে, তবে নিয়মিত এক্সএমএলের মতো পিতামাতাকে বন্ধ করার আগে সেই নেস্টড ট্যাগটি বন্ধ করতে হবে, অন্যথায় একটি মিথ্যা মানটি ফিরিয়ে দেওয়া উচিত
অনুমিতি
- আপনি ধরে নিতে পারেন ইনপুট সর্বদা এক বা একাধিক "সরল" ট্যাগ (গুলি) থাকবে
- আপনি ধরে নিতে পারেন ইনপুট সর্বদা উপরের সংজ্ঞায়িত ট্যাগগুলির ফর্ম্যাটটিকে অনুসরণ করবে
পরীক্ষার কেস
Falsey
<apple>
<apple></Apple>
<apple></mango>
<apple><mango>
<a><b></a></b>
Text<ul><li></li><ul />
<pear attr=foo></pear attr=foo>
<Ketchup flavor=spicy></Ketchup>
<Ap ple></Apple>
Truthy
Text
<Apple />
<Apple></Apple>
< Apple ></ Apple>
<mango><Apple/></mango>
<mango>Text<div class="bar">More text \o/</div></mango>
<food group="fruit">Fruits:<orange :fruit-variety="clementine" /><pear _fruit.type="asian" /></food>
<example foo="abcdefghijklmnopqrstuvwxyz1234567890-/:;()$&@.,?!'" noValue>Any characters allowed! (0.0)</example>
স্কোরিং
এটি কোড-গল্ফ , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। স্ট্যান্ডার্ড লুফোলগুলি যথারীতি নিষিদ্ধ।
1 দ্রষ্টব্য : এটি আসল এক্সএমএল নয়, তবে চ্যালেঞ্জের জন্য বিভিন্ন বিধি সহ একটি সিউডো-এক্সএমএল। ট্যাগ এবং বৈশিষ্ট্যের নাম স্পেসিফিকেশন থেকে পৃথক।
< : : :><:/><: :=":=:" ::></:>< /:>
?