টাওয়ার অফ হ্যানোই একটি গাণিতিক পাজল। এতে তিনটি রড এবং বিভিন্ন আকারের ডিস্ক রয়েছে যেগুলো যেকোনো রডে স্লাইড করে যেতে পারে। পাজলটি শুরু হয় ডিস্কগুলো এক রডে আকার অনুযায়ী আক্রমণক্রমে স্ট্যাক করে (সबচোটো উপরে)। লক্ষ্য হলো একই স্ট্যাকটি তৃতীয় রডে তৈরি করা।
পাজল সমাধানের নിയমগুলো:
- একবারে শুধু একটি ডিস্ক সরানো যায়।
- প্রতিটি মুভে একটি স্ট্যাকের উপরের ডিস্ক নেয়া হয় এবং অন্য স্ট্যাকের উপরে রাখা হয়। অর্থাৎ ডিস্ক সরানো যায় কেবল তখনি যখন সেটি কোনো স্ট্যাকের উপরের ডিস্ক হয়।
- کوটি বড় ডিস্কের ওপর ছোট ডিস্ক রাখা যায় না।
নমুনা
ইনপুট - ৩
আউটপুট -
A to B A to C B to C A to B C to A C to B A to 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');
return 0;
}
আউটপুট
A to B A to C B to C A to B C to A C to B A to B