হ্যানয়ের টাওয়ার কী তা আপনি যদি না জানেন তবে আমি এটি সংক্ষেপে ব্যাখ্যা করব: এখানে তিনটি রড এবং কয়েকটি ডিস্ক রয়েছে যার প্রতিটিটিরই আকার আলাদা। শুরুর দিকে সমস্ত ডিস্ক প্রথম টাওয়ারে রয়েছে, সাজানো ক্রমে: সবচেয়ে বড়টি নীচে এবং শীর্ষে সবচেয়ে ছোট। লক্ষ্যটি হ'ল সমস্ত ডিস্ক তৃতীয় রডের উপরে নিয়ে আসা। সহজ শোনাচ্ছে? এখানে ধরা আছে: আপনি অন্য ডিস্কের চেয়ে ছোট ডিস্কের উপরে একটি ডিস্ক রাখতে পারবেন না; এগুলিকে অন্য রডে নিয়ে যাওয়ার জন্য আপনি কেবল একবারে নিজের হাতে একটি ডিস্ক ধরে রাখতে পারেন এবং আপনি কেবল টেবিলের উপরে নয় রডগুলিতে ডিস্ক রাখতে পারেন, আপনি লুক্কায়িত জারজ।
আসকি উদাহরণ সমাধান:
A B C
| | |
_|_ | |
__|__ | |
A B C
| | |
| | |
__|__ _|_ |
A B C
| | |
| | |
| _|_ __|__
A B C
| | |
| | _|_
| | __|__
চ্যালেঞ্জ
এ, বি এবং সি নামে তিনটি রড রয়েছে (আপনি যদি এগুলিকে সহায়তা করেন তবে আপনি তাদেরকে 1,2 এবং 3 টি স্বাচ্ছন্দ্যেও কল করতে পারেন) শুরুতে সমস্ত এন ডিস্ক রড এ (1) এ থাকে।
আপনার চ্যালেঞ্জ হানুইয়ের টাওয়ারের জন্য একটি সমাধান যাচাই করা। আপনার এটি নিশ্চিত করতে হবে:
- শেষ পর্যন্ত সমস্ত এন ডিস্ক রড সি (3) এ রয়েছে।
- প্রদত্ত যে কোন ডিস্কের জন্য কোনও ডিস্কের নীচে ছোট ডিস্ক নেই।
- খালি রড থেকে ডিস্ক নেওয়ার চেষ্টা করা বা ডিস্কগুলি অজানা রোধে স্থানান্তরিত করার মতো স্পষ্ট ত্রুটি নেই।
(সমাধানটি সর্বোত্তম হতে হবে না))
ইনপুট
আপনার প্রোগ্রাম দুটি ইনপুট পাবেন:
- ডিস্কের সংখ্যা এন (একটি পূর্ণসংখ্যা)
যে পদক্ষেপগুলি নেওয়া হয়, এতে কয়েকটি টিপলস থাকে: (বর্তমানে শীর্ষে থাকা ডিস্কটি থেকে নেওয়া টাওয়ার), (এই ডিস্কটি নিয়ে যাওয়ার জন্য টাওয়ার) যেখানে প্রতিটি টিপল একটি চালকে বোঝায়। সেগুলি কীভাবে উপস্থাপিত হবে তা আপনি চয়ন করতে পারেন। উদাহরণস্বরূপ n = 2 এর জন্য সমাধানটি উপস্থাপনের নীচের পদ্ধতির মতো কিছু যা আমি উপরে ascii এ আঁকছি। (আমি পরীক্ষার ক্ষেত্রে প্রথমটি ব্যবহার করব, কারণ এটি চোখে সহজ):
"এ-> বি; এ-> সি; বি-> সি"
[( "একটি", "বি"), ( "একটি", "সি"), ( "বি", "সি")]
[(1,2), (1,3), (2,3)]
"ABACBC"
[1,2,1,3,2,3]
আউটপুট
সত্যবাদী, যদি "চ্যালেঞ্জ" এর অধীনে শর্তগুলি পাওয়া যায় তবে।
মিথ্যা, তারা যদি না।
পরীক্ষার কেস:
সত্য:
n=1, "A->C"
n=1, "A->B ; B->C"
n=2, "A->B ; A->C ; B->C"
n=2, "A->C ; C->B ; A->C ; B->C"
n=2, "A->C ; A->B ; C->B ; B->A ; B->C ; A->C"
n=3, "A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; A->C"
n=4, "A->B ; A->C ; B->C ; A->B ; C->A ; C->B ; A->B ; A->C ; B->C ; B->A ; C->A ; B->C ; A->B ; A->C ; B->C"
মিথ্যা:
তৃতীয়টি @ মার্টিনএেন্ডার দ্বারা পরামর্শ দেওয়া হয়েছে, @ জোফান দ্বারা সপ্তম
n=1, "A->B"
n=1, "C->A"
n=2, "A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; A->C"
n=2, "A->B ; A->C ; C->B"
n=2, "A->C ; A->B ; C->B ; B->A"
n=2, "A->C ; A->C"
n=3, "A->B ; A->D; A->C ; D->C ; A->C"
n=3, "A->C ; A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; A->C"
n=3, "A->C ; A->B ; C->B ; A->B ; B->C ; B->A ; B->C ; A->C"
n=3, "A->C ; A->B ; C->B ; A->C ; B->A ; B->C ; C->B"
n=4, "A->B ; A->C ; B->C ; A->B ; C->A ; C->B ; A->B ; A->C ; B->C ; B->A ; C->A ; B->C ; A->B ; A->C"
n=4, "A->B ; A->B ; A->B ; A->C ; B->C ; B->C ; B->C"
এটি কোড-গল্ফ , সংক্ষিপ্ততম সমাধানের জয়। মানক বিধি এবং ফাঁকগুলি প্রযোজ্য। কোনও ব্যাটারি অন্তর্ভুক্ত নেই।
A->A
?
moving discs to nonexistant rods.
অবশ্যই অবশ্যই যাচাই করতে হবে হ্যাঁ, এটি একটিD
A=1
,B=2
,C=3
, ইত্যাদি)?