কম্পিউটার টিউটোরিয়াল

সি++-এ ম্যাট্রিক্সে একক মুভমেন্ট (Single Movement) বের করা

এই সমস্যাতে, আমাদের চারটি মান 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
  1. C++-এ সিংগেল ভ্যালুড সাবট্রির কাউন্ট বের করা

  2. সি++ প্রোগ্রাম: গ্রাফ ম্যাট্রিক্সের বিপরীত (Inverse) নির্ণয়

  3. C++ প্রোগ্রাম: গ্রাফ ম্যাট্রিক্সের ট্রান্সপোজ (Transpose) বের করা

  4. ম্যাট্রিক্সের ট্রান্সপোজ (Transpose) বের করার C++ প্রোগ্রাম