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

C++-এ L/R স্ট্রিং দিয়ে চূড়ান্ত দিক নির্ণয়


সমস্যা

একটি স্ট্রিং দেওয়া আছে যেটিতে শুধু 'L' (বাম) এবং 'R' (ডান) আছে। প্রাথমিক দিক উত্তর (N)। প্রতিটি 'L'-এ ৯০ ডিগ্রি বামে, 'R'-এ ৯০ ডিগ্রি ডানে ঘুরুন। চূড়ান্ত দিক (N/E/S/W) বের করুন।

অ্যালগরিদম

  1. count = 0।
  2. প্রতিটি ক্যারেক্টার c:
    • c == 'L' → count--
    • c == 'R' → count++
  3. count % 4 অনুযায়ী দিক নির্ধারণ:
    • পজিটিভ: 0→N, 1→E, 2→S, 3→W
    • নেগেটিভ: 0→N, -1→W, -2→S, -3→E

C++ কোড

#include <bits/stdc++.h>
using namespace std;

string get_dir(string s) {
    int count = 0;
    for (char c : s) {
        if (c == 'L') count--;
        else if (c == 'R') count++;
    }
    count %= 4;
    if (count < 0) count += 4; // নেগেটিভ মডুলো হ্যান্ডল
    const char dirs[4] = {'N','E','S','W'};
    return string(1, dirs[count]);
}

int main() {
    cout << get_dir("RRLRLLR"); // E
}

আউটপুট

E

ব্যাখ্যা

নেট রোটেশন = (#R - #L) * 90°। মডুলো 4 দিয়ে চূড়ান্ত দিক বের করা যায়।

  1. C++-এ দিয়ে गये পয়েন্ট থেকে সম্ভাব্য কোয়াড্রিল্যাটারেল সংখ্যা বের করুন

  2. C++-এ গ্রিডের মধ্যে নির্দিষ্ট দিকচালনের সম্ভাব্য মোভ সংখ্যা গণনা

  3. C++-এ সিকোয়েন্স সেটে লংগেস্ট কমন প্রিফিক্স (Longest Prefix Matching) খুঁজে বের করা

  4. স্ট্রিংয়ের দৈর্ঘ্য (Length) বের করার C++ প্রোগ্রাম