সমস্যা
বলুন যে আপনার কাছে এস এন এর মাধ্যমে এস 1 নামক এন স্ট্যাক রয়েছে , যেখানে প্রতিটি এস কে (কে = 1 থেকে এন) কে নম্বরের এন কপি থাকে।
উদাহরণস্বরূপ, যখন এন = 3 স্ট্যাকগুলি দেখতে লাগে:
1 2 3 <- top of stack
1 2 3
1 2 3 <- bottom of stack
=======
1 2 3 <- stack index
এখানে 1, 2 এবং 3 হিসাবে সূচকযুক্ত 3 টি স্ট্যাক রয়েছে এবং প্রত্যেকটিতে তার নিজস্ব সূচির এন উদাহরণ রয়েছে।
লক্ষ্য হ'ল এন স্ট্যাকগুলি পুনরায় সাজানো যাতে এগুলির প্রতিটি স্বতন্ত্রভাবে নীচে থেকে নীচে থেকে N এর মাধ্যমে 1 নম্বর থাকে numbers
উদাহরণস্বরূপ এন = 3 এর জন্য লক্ষ্য হ'ল স্ট্যাকগুলি পুনরায় সাজানো:
1 1 1
2 2 2
3 3 3
=======
1 2 3
আপনি কেবল স্ট্যাকগুলি দিয়ে যে ক্রিয়াটি সম্পাদন করতে পারবেন তা হ'ল স্ট্যাকগুলির মধ্যে একটি (শীর্ষস্থান) শীর্ষস্থান নিয়েছে এবং তাৎক্ষণিকভাবে এটিকে একটি অন্য স্ট্যাকের (পুশিং) শীর্ষে স্থাপন করবে । এটি এই শর্তগুলির সাপেক্ষে:
কোনও সংখ্যা কেবল স্ট্যাকের দিকে ঠেলা যায় যদি এটি স্ট্যাকের শীর্ষ সংখ্যার চেয়ে কম বা সমান হয়।
উদাহরণস্বরূপ, একটি
1
একটি1
,2
বা3
শীর্ষে2
একটি স্ট্যাকের দিকে ঠেলা যায় , তবে একটি কেবল উপরে2
বা একটি3
(বা উচ্চতর) দিয়ে একটি স্ট্যাকের দিকে ঠেলা যায় ।এটির প্রভাব রয়েছে যে স্ট্যাকগুলি সর্বদা একজাতীয়ভাবে উপরে থেকে নীচে বৃদ্ধি পায় ।
যে কোনও নরম্পটি স্ট্যাক থেকে পপ করা যেতে পারে এবং ধরে নেওয়া হয় যে পূর্বের বুলেটটি সন্তুষ্ট, যে কোনও স্ট্যাকের দিকে ধাক্কা দেওয়া যেতে পারে।
কোনও সংখ্যা একটি খালি স্ট্যাকের দিকে ঠেলাঠেলি করা যেতে পারে।
স্ট্যাকের সর্বোচ্চ উচ্চতার সীমা নেই।
স্ট্যাকগুলি তৈরি বা ধ্বংস করা যায় না, সেগুলির মধ্যে সর্বদা N থাকে।
এই চ্যালেঞ্জটি স্ট্যাক এক্সচেঞ্জটি সম্পন্ন করার জন্য কোন পপগুলি এবং কী ধাক্কা দেয় তা সিদ্ধান্ত নেওয়ার বিষয়ে, অগত্যা খুব কম পদক্ষেপে নয়, তবে একটি নিশ্চিত আগুনের পথে।
(কার্ডের ডেকের সাথে অনুশীলন করা সমস্যার জন্য অনুভূতি পাওয়ার জন্য ভাল উপায়))
চ্যালেঞ্জ
একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইতিবাচক পূর্ণসংখ্যক এন নেবে, 3 বা তার বেশি গ্যারান্টিযুক্ত। প্রারম্ভ বা স্ট্রিংটি ফেরত দিন যা প্রাথমিক অবস্থা থেকে স্ট্যাকগুলি পুনরায় সাজানোর জন্য প্রয়োজনীয় সমস্ত পপ-পুশ ক্রিয়াকে বোঝায়:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
=============
1 2 3 4 5
(এন = 5 কেস)
চূড়ান্ত অবস্থায়:
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
=============
1 2 3 4 5
আপনার আউটপুটে প্রতিটি লাইনে একটি স্পেস দ্বারা পৃথক দুটি সংখ্যা থাকতে হবে। প্রথম সংখ্যাটি স্ট্যাকের থেকে পপ করার সূচক এবং দ্বিতীয় সংখ্যাটি স্ট্যাকের দিকে এগিয়ে যেতে সূচক। সমস্ত লাইনের ক্রিয়া সম্পাদন করার জন্য কোনও নিয়ম ভঙ্গ না করে স্ট্যাকগুলি সঠিকভাবে সাজানো উচিত।
উদাহরণস্বরূপ, এন = 3 কেসের জন্য এখানে একটি সম্ভাব্য বৈধ আউটপুট রয়েছে:
1 2 [move the top number on stack 1 to the top of stack 2]
1 2 [repeat]
1 2 [repeat]
3 1 [move the top number on stack 3 to the top of stack 1]
2 3 [etc.]
2 3
2 3
2 1
2 1
2 1
3 1
3 1
3 1
3 2
1 2
1 2
1 2
1 3
2 3
2 3
2 3
1 2
3 2
3 1
নোট
আপনার আউটপুটটি অনুকূল হতে হবে না , কেবল সঠিক। অর্থাৎ আপনাকে পপ এবং পুশ সংখ্যা কমিয়ে আনার দরকার নেই।
- সুতরাং, ঠিক আছে, যদি কিছু পদক্ষেপ বারবার করা হয় এবং তত্ক্ষণাত্ বিপরীত হয়।
- পপিং এবং একই পদক্ষেপে এক ধাক্কায় ঠেলাঠেলি, যেমন
2 2
, পাশাপাশি অনুমোদিত (যদিও অর্থহীন)।
আপনার আউটপুট করে নিয়ন্ত্রণবাদী এবং সসীম করা প্রয়োজন।
মনে রাখবেন যে স্ট্যাকগুলিতে 1-ভিত্তিক সূচক রয়েছে। 0-ভিত্তিক সূচকের অনুমতি নেই।
9 এর চেয়ে বড় এন অবশ্যই একক অঙ্কের এন হিসাবে অবশ্যই কাজ করবে N
যদি ইচ্ছা হয় তবে স্পেস এবং নিউলাইনগুলির জায়গায় আপনি কোনও দুটি স্বতন্ত্র, অ-অঙ্কের মুদ্রণযোগ্য ASCII অক্ষর ব্যবহার করতে পারেন । আউটপুটে একটি ট্রেলিং নিউলাইন (বা নিউলাইন বিকল্প) ভাল।
স্কোরিং
বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী। টাইব্রেকার বেশি ভোট দেওয়া উত্তর।
যদি আপনি আপনার অ্যালগোরিদমটি দেখতে পারেন তবে মূল্যহীন ব্রাউনি পয়েন্টগুলি সর্বোত্তম।
-._(._.)_.-
N=3
অনুকূল ক্ষেত্রে আপনি যে সম্ভাব্য আউটপুটটি অন্তর্ভুক্ত করছেন তা কি?