এই সমস্যাতে, আমাদের চারটি মান x1, y1, x2, y2 দেওয়া আছে যা দুটি পয়েন্ট (x1, y1) এবং (x2, y2)-কে বোঝায়। আমাদের কাজ হলো ম্যাট্রিক্সে একক মুভমেন্ট (single movement) বের করা। অর্থাৎ, একটি পয়েন্ট (x1, y1) থেকে অন্য পয়েন্ট (x2, y2)-এ যাওয়ার দিক (direction) বের করতে হবে। চালের সংখ্যা যেকোনো হতে পারে কিন্তু দিকটি একটিই হতে হবে এবং দিকটি রিটার্ন করতে হবে - "left", "right", "up", "down"। যদি সম্ভব না হয়, তবে -1 রিটার্ন করব।
উদাহরণ দিয়ে সমস্যা বোঝা যাক,
ইনপুট
x1 = 2, y1 = 1, x2 = 5, y2 = 1
আউটপুট
Right
সমাধানের পদ্ধতি
এই সমস্যার একটি সহজ সমাধান হলো এই ফ্যাক্ট ব্যবহার করা যে সোর্স থেকে ডেস্টিনেশনে পৌঁছানোর জন্য দুটি কোঅর্ডিনেটে যেকোনো একটি (x1:x2 বা y1:y2) একই থাকতে হবে। মানগুলো নিচের কেস অনুযায়ী হবে:
Case 1: x1 = x2 & y1 > y2 -> Direction: Left Case 2: x1 = x2 & y2 > y1 -> Direction: Right Case 3: y1 = y2 & x1 > x2 -> Direction: Up Case 4: y1 = y2 & x2 > x1 -> Direction: Down
সমাধান কোড:
উদাহরণ
#include <iostream>
using namespace std;
void findSingleMovement(int x1, int y1, int x2, int y2) {
if (x1 == x2 && y1 < y2)
cout<<"Right";
else if (x1 == x2 && y1 > y2)
cout<<"Left";
else if (y1 == y2 && x1 < x2)
cout<<"Down";
else if (y1 == y2 && x1 > x2)
cout<<"Up";
else
cout<<"Not Possible";
}
int main() {
int x1, x2, y1, y2;
x1 = 2; y1 = 1;
x2 = 5; y2 = 1;
cout<<"The direction of movement is ";
findSingleMovement(x1, y1, x2, y2);
return 0;
}
আউটপুট
The direction of movement is Down