Python程式:檢查機器人是否在邊界框內移動
假設我們有一個字串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, 0
- d := 0
- for times in range(0, 3):
- for i in range(0, 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 s[i] == "F":
- if r == 0 and c == 0:
- return True
- for i in range(0, len(s)):
- return 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP