একটি প্রসারিত সাপ দেখতে এমন কিছু দেখাচ্ছে:
<||=|||:)~
প্রসারিত অংশ|
হিসাবে পরিচিত একটি প্রসারিত সাপের মধ্যে উল্লম্ব বারগুলির ( ) প্রতিটি পৃথক ক্রম পৃথকভাবে এর প্রস্থের দ্বিগুণ পর্যন্ত প্রসারিত হয় এবং একবারে প্রসারিত স্ট্র্যাশ ( , ) দিয়ে অঙ্কিত হয় ।/
\
উপরের বিশেষ সাপটিতে এরকম দুটি প্রসারিত অংশ রয়েছে যা এটিকে চারটি সম্ভাব্য পোজ দেয়:
<||=|||:)~
</\/\=|||:)~
<||=/\/\/\:)~
</\/\=/\/\/\:)~
তার সর্বনিম্ন প্রসারিত ভঙ্গিতে প্রসারিত সাপের সাধারণ রূপটি এই রেজেক্স দ্বারা সংজ্ঞায়িত করা হয় :
<(\|+=)*\|+:\)~
যা কথায় কথায় বলা যেতে পারে:
<
, ক্রমের সাথে যে কোন সংখ্যার দ্বারা অনুসরণ|
's যোগদান সঙ্গে=
চিহ্ন, দ্বারা অনুসরণ:)~
।
সুতরাং <|:)~
এবং <||:)~
এবং <|=|:)~
এবং <|=|=||=|||||=||:)~
প্রসার প্রবণ সাপ আছে, কিন্তু <=:)~
এবং <=|:)~
এবং <||=:)~
এবং <|==||:)~
হয় না।
প্রসারিত সাপগুলি ডান, এর পরিবর্তে বাম মুখোমুখি হতে পারে ~(:|||=||>
। ফর্মগুলি একই, কেবল মিরর করা।
চ্যালেঞ্জ
একটি প্রোগ্রাম লিখুন যা একে অপরের মুখোমুখি দুটি প্রসারিত সাপের এক লাইনের স্ট্রিংয়ের মধ্যে নিয়ে যায় যার মাঝে কয়েকটি স্পেস থাকে। উভয় সাপ তাদের সর্বনিম্ন প্রসারিত ভঙ্গিতে থাকবে (সমস্ত উল্লম্ব বার, কোনও স্ল্যাশ)। স্ট্রিংটি ডান-মুখের সাপের লেজ দিয়ে শুরু হবে এবং বাম-মুখের সাপের লেজ দিয়ে শেষ হবে (আপনি বিকল্পভাবে ধরে নিতে পারেন একটি অনুবর্তনযোগ্য নিউলাইনও রয়েছে)।
উদাহরণস্বরূপ, সাপের মধ্যে পাঁচটি স্পেস সহ একটি সম্ভাব্য ইনপুট এখানে রয়েছে:
<|=||:)~.....~(:||||>
আমি .
স্পষ্টতার জন্য প্রকৃত স্থান অক্ষরের পরিবর্তে পিরিয়ড ( ) ব্যবহার করছি ।
সাপের মধ্যে শূন্যস্থানগুলি বৈধ ইনপুট:
<|=||:)~~(:||||>
আমরা বলি যে সাপগুলি যখন তাদের জিভগুলি স্পর্শ করে তখন তারা চুমু খাচ্ছে।
আপনার প্রোগ্রামে উভয় সাপের বিস্তৃত অংশের কিছু সংশ্লেষ প্রসারিত করা দরকার যে সাপগুলির মধ্যে সম্ভব সংখ্যক স্পেস রয়েছে (ওভারল্যাপিং ছাড়াই), যেমন সাপ যতটা সম্ভব চুম্বনের কাছাকাছি ।
উভয় সাপের লেজ স্থির থাকলেও তাদের মাথা এবং দেহ নড়াচড়া করতে পারে - ডান মুখের সাপটির জন্য ডানদিকে, বাম-মুখী সাপের জন্য বাম - প্রসারিত অংশগুলি প্রসারিত করা হয়েছে তার অনুসারে।
আপনার প্রোগ্রামের আউটপুটটি হ'ল সিঙ্গল লাইনের স্ট্রিং (প্লাস traচ্ছিক ট্রেলিং নিউলাইন) যা সাপগুলিকে যতটা সম্ভব চুম্বনের কাছে দেখায়, প্রসারিত অংশগুলির জন্য উল্লম্ব বারগুলির জায়গায় বিকল্প স্ল্যাশ আঁকা থাকে।
উদাহরণস্বরূপ, <|=||:)~.....~(:||||>
(উপরে থেকে) এর আউটপুটটি হবে:
</\=||:)~~(:/\/\/\/\>
এখানে কেবলমাত্র এটিই সমাধান কারণ প্রসারিত অংশগুলির অন্য কোনও সংমিশ্রণের সাথে সাপগুলি চুম্বন থেকে দূরে সরে যাবে বা আরও দূরে থাকবে।
যদি একাধিক সমাধান সম্ভব হয় তবে আউটপুট তাদের মধ্যে যে কোনও একটি হতে পারে।
উদাহরণস্বরূপ, যদি ইনপুটটি ছিল
<|=||:)~.....~(:|||=|>
আউটপুট হতে পারে
<|=/\/\:)~~(:/\/\/\=|>
অথবা
</\=||:)~~(:/\/\/\=/\>
মনে রাখবেন যে সাপগুলিকে চুম্বন করা সর্বদা সম্ভব হবে না, তবে আপনার এখনও এগুলি যতটা সম্ভব বন্ধ করা দরকার।
উদাহরণস্বরূপ, যদি ইনপুটটি ছিল
<||=||||:)~...~(:||>
আউটপুট হতে পারে
</\/\=||||:)~.~(:||>
অথবা
<||=||||:)~.~(:/\/\>
যদি সাপগুলি ইতিমধ্যে চুম্বন করে তবে আউটপুটটি ইনপুটটির সমান হবে। যেমন
<|=||:)~~(:||||>
সাধারণভাবে, যদি কোনও প্রসারিত অংশের প্রসারণ সাপকে ওভারল্যাপ করে তোলে তবে আউটপুটটি ইনপুটটির মতোই হবে। যেমন
<|||=|||:)~..~(:||||=|||||=||||||>
নোট
- স্টিডিন বা কমান্ড লাইন থেকে যথারীতি ইনপুট নেয় বা কোনও ফাংশন লিখুন যা স্ট্রিং নেয়। আউটপুট প্রিন্ট বা রিটার্ন করুন।
- আপনি যদি পছন্দ করেন তবে
.
স্পেস () এর জায়গায় ইনপুট এবং আউটপুটে পিরিয়ড ( ) ব্যবহার করতে পারেন ।
- এটি প্রতিস্থাপন করা যে উল্লম্ব বারগুলির ক্রমের মধ্যে বিকল্প স্ল্যাশ করা কেবলমাত্র গুরুত্বপূর্ণ। তাদের সাপ বড় আকারে অর্ডার করা বা একটি পিছনে বা পিছনে স্ল্যাশ প্রথমে আসে কিনা তাতে কিছু যায় আসে না।
- প্রসারিত অংশগুলি পার্টওয়ে পর্যন্ত প্রসারিত করতে পারে না - এটি হুবহু দ্বিগুণ বা মোটেও কোনও এক্সটেনশন নয়।
স্কোরিং
এটি কোড-গল্ফ । বাইটস মধ্যে সংক্ষিপ্ততম জমা জয়। টাইব্রেকার এর আগের উত্তর।
>
না হয়ে <
পারেন, জন্য জন্য একই (
এবং )
মধ্যে), কিন্তু তিনি বলেন, "এটা যে উল্লম্ব বার তারা প্রতিস্থাপিত ক্রম মধ্যে বিকল্প স্ল্যাশ শুধুমাত্র গুরুত্বপূর্ণ। তাদের ক্রম সাপ বড় আকারের হোক বা পিছিয়ে থাকা বা পিছনে স্ল্যাশ প্রথমে আসুক তাতে কিছু যায় আসে না।