সমস্যা
একটি স্ট্রিং দেওয়া আছে যেটিতে শুধু 'L' (বাম) এবং 'R' (ডান) আছে। প্রাথমিক দিক উত্তর (N)। প্রতিটি 'L'-এ ৯০ ডিগ্রি বামে, 'R'-এ ৯০ ডিগ্রি ডানে ঘুরুন। চূড়ান্ত দিক (N/E/S/W) বের করুন।
অ্যালগরিদম
count = 0।- প্রতিটি ক্যারেক্টার
c:c == 'L'→count--c == 'R'→count++
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 দিয়ে চূড়ান্ত দিক বের করা যায়।