একটি স্ট্যাকের রাজ্য চিত্রটি দেখায় যে কীভাবে একটি স্ট্যাকের মানগুলি অন্যটিতে রূপান্তরিত হয়। উদাহরণস্বরূপ, এটি স্ট্যাক স্টেট ডায়াগ্রাম:
3 0 2 1 0
এর অর্থ হল এখানে প্রাথমিকভাবে 3 টি মান ( 3
অংশ) সহ একটি স্ট্যাক রয়েছে । এই মানগুলি 0 থেকে 2 পর্যন্ত সূচী হয়, শীর্ষে 0 দিয়ে:2 1 0
। পরের অংশটি 0 2 1 0
স্ট্যাকের চূড়ান্ত অবস্থা বর্ণনা করে: স্ট্যাকের উপরে মূলত যে মানটি ছিল তা পিছনেও অনুলিপি করা হয়েছে।
এই রূপান্তরগুলি এমন স্ট্যাকের উপর ঘটে যা বেশ কয়েকটি ডেটা ধরণের সমর্থন করে:
- "মান" টাইপ, যা স্ট্যাকের মূলত এটি। এটি একটি স্ট্রিং, পূর্ণসংখ্যা ইত্যাদি হতে পারে তবে এর মানটি জানা দরকার।
- "তালিকা" টাইপ, যা কোনও ডাটা টাইপের মান সমেত একটি তালিকা।
এই রূপান্তরটির মডেল করতে, নিম্নলিখিত ক্রিয়াকলাপগুলির অনুমতি দেওয়া হয়েছে:
S
: স্ট্যাকের উপরে দুটি মান অদলবদল করুন:2 1 0
→2 0 1
D
: স্ট্যাকের শীর্ষে মানটি নকল করুন:1 0
→1 0 0
R
: স্ট্যাকের উপরের মানটি সরান।2 1 0
→2 1
L
: শীর্ষ মানটিকে এক-উপাদান তালিকায় পরিণত করে যে মানটি:2 1 0
→ →2 1 (0)
C
: স্ট্যাকের শীর্ষ দুটি তালিকা সংযুক্ত করুন:2 (1) (0)
→2 (1 0)
U
: একটি তালিকা থেকে সমস্ত মান স্ট্যাকের উপরে রাখুন:2 (1 0)
→2 1 0
এগুলি আন্ডারলোড কমান্ডগুলির সমতুল্য ~ : ! a * ^
, যদি অন্য কোনও কমান্ড ব্যবহার না করা হয়।
S
, D
, R
, এবং L
স্ট্যাকের উপর কোন মান ব্যবহার করতে পারেন, কিন্তু C
এবং U
ফাংশন স্ট্যাকের উপর তালিকা থাকতে হবে। একটি জমা দেওয়া যার উত্পন্ন ক্রমগুলি অবৈধ ক্রিয়াকলাপগুলি (যেমন D
একটি খালি স্ট্যাক বা একটি তালিকাবিহীন লিখিতভাবে) প্রাইম করার চেষ্টা করে U
তা ভুল এবং অবশ্যই শাস্তি পেতে হবে স্থির করেছি।
স্ট্যাকের স্টেট ডায়াগ্রামটি সমাধান করার জন্য, কমান্ডগুলির একটি ক্রম সন্ধান করুন যা প্রাথমিক স্ট্যাকের অবস্থাটিকে সঠিকভাবে রূপান্তর করবে one উদাহরণস্বরূপ, এর একটি সমাধান 3: 0 2 1 0
হ'ল LSLCSLCULSLCLSLDCSC USLCU
:
2 1 0
L 2 1 (0)
S 2 (0) 1
L 2 (0) (1)
C 2 (0 1)
S (0 1) 2
L (0 1) (2)
C (0 1 2)
U 0 1 2
L 0 1 (2)
S 0 (2) 1
L 0 (2) (1)
C 0 (2 1)
L 0 ((2 1))
S ((2 1)) 0
L ((2 1)) (0)
D ((2 1)) (0) (0)
C ((2 1)) (0 0)
S (0 0) ((2 1))
C (0 0 (2 1))
U 0 0 (2 1)
S 0 (2 1) 0
L 0 (2 1) (0)
C 0 (2 1 0)
U 0 2 1 0
আপনার কাজ হ'ল এমন একটি প্রোগ্রাম লিখুন যা স্ট্যাকের স্টেট ডায়াগ্রাম গ্রহণ করে এবং এর সমাধান দেয়।
পরীক্ষার কেস
2 1 0 ->
3 2 0 -> SR
9 -> RRRRRRRRR
2 0 1 0 -> LSLCDCUR
2 0 1 1 -> SD
6 2 -> RRSRSRSR
5 0 1 2 3 4 -> LSLCSLCSLCSLCU
4 2 0 1 3 2 -> LSLCSLSCSLCULSLSCSLSCLSLDCSCUSLCU
এটি কোড-গল্ফ , সুতরাং সংক্ষিপ্ততম বৈধ উত্তর (বাইটে) জেতে।
C
স্ট্যাকের উপরে এবং দ্বিতীয় অবস্থানে দরকার তালিকা? বা দ্বিতীয় অবস্থানে উপাদান শীর্ষে একটি তালিকায় যুক্ত করা যেতে পারে?
C
উভয় পদে তালিকা প্রয়োজন। এটি একটি মান এবং একটি তাল মিলিয়ে বোঝানোর কোনও মানে হয় না।