मान लीजिए कि हमारे पास एक स्ट्रिंग है, जो रोबोट की चाल का प्रतिनिधित्व करती है। रोबोट वर्तमान में (0, 0) स्थिति में है और इसका मुख उत्तर की ओर है। मूव स्ट्रिंग s में ये वर्ण हो सकते हैं
- "F" दिशा आगे बढ़ने के लिए, एक इकाई
- "L" 90 डिग्री 'बाएं घुमाने के लिए
- "R" 90 डिग्री 'दाएं घुमाने के लिए
इसलिए यदि रोबोट s क्रम में बार-बार चालें चलता है, तो हमें यह जांचना होगा कि क्या विमान में कोई बॉक्स है जिसमें रोबोट कभी नहीं जाता है या नहीं।
इसलिए, यदि इनपुट s ="FFRFRFFFRF" जैसा है, तो आउटपुट सही होगा, क्योंकि रोबोट 2 इकाइयों को उत्तर की ओर ले जाता है। फिर 90 दाएँ मुड़ता है और एक ब्लॉक घुमाता है, फिर 90 डिग्री दाएँ घुमाता है और 2 इकाई दक्षिण और फिर दाएँ घुमाता है, इसलिए यह एक बॉक्स बना रहा है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- चलती है:=एक सरणी जिसमें दिशाएं होती हैं [[0, -1], [1, 0], [0, 1], [-1, 0]]
- r, c :=0, 0
- घ :=0
- 0 से 3 के बीच के समय के लिए, करें
- i के लिए 0 से लेकर s के आकार तक के लिए, करें
- यदि s[i] "F" के समान है, तो
- (r, c) :=(r + मूव्स[d, 0], c + मूव्स[d, 1])
- अन्यथा जब s[i] "L" के समान हो, तो
- d :=(d + 3) मॉड 4
- अन्यथा जब s[i] "R" के समान हो, तो
- d :=(d + 1) मॉड 4
- यदि s[i] "F" के समान है, तो
- यदि r, 0 के समान है और c, 0 के समान है, तो
- सही लौटें
- i के लिए 0 से लेकर s के आकार तक के लिए, करें
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(s): moves = [[0, -1], [1, 0], [0, 1], [-1, 0]] r, c = 0, 0 d = 0 for times in range(4): for i in range(len(s)): if s[i] == "F": r, c = r + moves[d][0], c + moves[d][1] elif s[i] == "L": d = (d + 3) % 4 elif s[i] == "R": d = (d + 1) % 4 if r == 0 and c == 0: return True return False s = "FFRFRFFRF" print(solve(s))
इनपुट
"FFRFRFFRF"
आउटपुट
True