मान लीजिए हमारे पास एक स्ट्रिंग s है, जो रोबोट की चालों को दर्शाती है। रोबोट वर्तमान में (0, 0) स्थिति पर है और यह उत्तर की ओर मुंह कर रहा है। चाल स्ट्रिंग s में ये वर्ण हो सकते हैं:
"F"आगे की दिशा में एक इकाई चलने के लिए"L"90 डिग्री बाएं घूमने के लिए"R"90 डिग्री दाएं घूमने के लिए
इसलिए यदि रोबोट क्रम में s में चालों को बार-बार करता है, तो हमें जांचना है कि क्या तल में कोई बॉक्स है जिसमें रोबोट कभी नहीं छोड़ता या नहीं।
इसलिए, यदि इनपुट है s = "FFRFRFFRF", तो आउटपुट होगा True, क्योंकि रोबोट उत्तर की ओर 2 इकाई चलता है। फिर दाएं 90 घूमता है और एक ब्लॉक चलता है, फिर फिर से 90 डिग्री दाएं घूमता है और 2 इकाई दक्षिण चलता है फिर फिर से दाएं, इसलिए यह एक बॉक्स बना रहा है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
moves :=एक सरणी जिसमें दिशाएं हों[[0, -1], [1, 0], [0, 1], [-1, 0]]r, c := 0, 0d := 0timesके लिए 0 से 3 तक की रेंज में, करें:iके लिए 0 सेsके आकार तक की रेंज में, करें:- यदि
s[i]"F"के समान है, तो:(r, c) := (r + moves[d][0], c + moves[d][1])
- अन्यथा जब
s[i]"L"के समान है, तो:d := (d + 3) mod 4
- अन्यथा जब
s[i]"R"के समान है, तो:d := (d + 1) mod 4
- यदि
- यदि
r0 के समान है औरc0 के समान है, तो:Trueलौटाएं
Falseलौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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