হ্যানয়ের টাওয়ার একটি গাণিতিক ধাঁধা৷ এটিতে তিনটি রড এবং বিভিন্ন আকারের বেশ কয়েকটি ডিস্ক রয়েছে যা যেকোনো রডের উপর স্লাইড করতে পারে। ধাঁধাটি একটি রডের আকারের ক্রমবর্ধমান ক্রম অনুসারে একটি ঝরঝরে স্ট্যাকের মধ্যে ডিস্কগুলি দিয়ে শুরু হয়, শীর্ষে সবচেয়ে ছোট। আমাদের তৃতীয় রডে একই স্ট্যাক পেতে হবে।
ধাঁধার উদ্দেশ্য হল সম্পূর্ণ স্ট্যাকটিকে অন্য রডে নিয়ে যাওয়া, নিম্নলিখিত সহজ নিয়মগুলি মেনে চলা—
-
একবারে শুধুমাত্র একটি ডিস্ক সরানো যায়৷
-
প্রতিটি মুভের মধ্যে একটি স্ট্যাক থেকে উপরের ডিস্কটি নেওয়া এবং এটিকে অন্য স্ট্যাকের উপরে স্থাপন করা হয় অর্থাৎ একটি ডিস্ক শুধুমাত্র তখনই সরানো যেতে পারে যদি এটি একটি স্ট্যাকের উপরের ডিস্ক হয়।
-
একটি ছোট ডিস্কের উপরে কোন ডিস্ক রাখা যাবে না।
নমুনা
ইনপুট ৷ − 3
আউটপুট − A থেকে B
এ থেকে সি
বি থেকে সি
ক থেকে বি
সি থেকে এ
সি থেকে বি
A থেকে B ব্যাখ্যা − পুনরাবৃত্ত ফাংশন ব্যবহার করে এবং হ্যানয়ের টাওয়ার সমাধান করে।
উদাহরণ
#include<stdio.h> void TOH(int n,char x,char y,char z) { if(n>0) { TOH(n-1,x,z,y); printf("\n%c to %c",x,y); TOH(n-1,z,y,x); } } int main() { int n=3; TOH(n,'A','B','C'); }
আউটপুট
A to B A to C B to C A to B C to A C to B A to B