मान लीजिए हमारे पास एक स्ट्रिंग है जिसमें केवल L और R हैं, यह क्रमशः बाएं घूर्णन और दाएं घूर्णन को दर्शाता है, हमें पिवट की अंतिम दिशा खोजनी है। यहां दिशाएं उत्तर (N), पूर्व (E), दक्षिण (S) और पश्चिम (W) हैं। हम मान रहे हैं कि पिवट कंपास में उत्तर (N) की ओर इंगित करता है।
उदाहरण के लिए, यदि इनपुट "RRLRLLR" है, तो आउटपुट E होगा, क्योंकि प्रारंभिक दिशा N है, RR दक्षिण (S) की ओर इंगित करेगा, फिर LR फिर से N की ओर इंगित करेगा, फिर LL पिछली स्थिति N की ओर इंगित करेगा, फिर R पूर्व (E) की ओर इंगित करेगा। इसलिए E अंतिम है।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- काउंट := 0
- डायरेक्शन := एक खाली स्ट्रिंग
- i := 0 से s की लंबाई - 1 तक लूप करें:
- यदि s[i] 'L' के बराबर है, तो काउंट घटाएं
- अन्यथा काउंट बढ़ाएं
- यदि काउंट > 0:
- यदि काउंट % 4 == 0, तो डायरेक्शन := "N"
- अन्यथा यदि काउंट % 4 == 1, तो डायरेक्शन := "E"
- अन्यथा यदि काउंट % 4 == 2, तो डायरेक्शन := "S"
- अन्यथा यदि काउंट % 4 == 3, तो डायरेक्शन := "W"
- यदि काउंट < 0:
- यदि काउंट % 4 == 0, तो डायरेक्शन := "N"
- अन्यथा यदि काउंट % 4 == -1, तो डायरेक्शन := "W"
- अन्यथा यदि काउंट % 4 == -2, तो डायरेक्शन := "S"
- अन्यथा यदि काउंट % 4 == -3, तो डायरेक्शन := "E"
- डायरेक्शन लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
#include<bits/stdc++.h> using namespace std; string get_dir(string s) { int count = 0; string direction = ""; for (int i = 0; i < s.length(); i++){ if (s[0] == '\n') return NULL; if (s[i] == 'L') count--; else count++; } if (count > 0){ if (count % 4 == 0) direction = "N"; else if (count % 4 == 1) direction = "E"; else if (count % 4 == 2) direction = "S"; else if (count % 4 == 3) direction = "W"; } if (count < 0){ if (count % 4 == 0) direction = "N"; else if (count % 4 == -1) direction = "W"; else if (count % 4 == -2) direction = "S"; else if (count % 4 == -3) direction = "E"; } return direction; } int main() { string s = "RRLRLLR"; cout << (get_dir(s)); } इनपुट
"RRLRLLR"
आउटपुट
E