สมมติว่าเรามีหุ่นยนต์ซึ่งกำลังนั่งอยู่ในตำแหน่ง (0, 0) (เครื่องบินคาร์ทีเซียน) หากเรามีรายชื่อการเคลื่อนไหวที่สามารถทำได้ ประกอบด้วย N(เหนือ), S(ใต้), W(ตะวันตก) และ E(ตะวันออก) เราต้องตรวจสอบว่าสามารถไปถึงพิกัดปลายทางได้หรือไม่ (x, y)
ดังนั้น ถ้าอินพุตเหมือนย้าย =['N','N','E','E','S'], (x,y) =(2,1) ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- temp_coord :=[0,0]
- สำหรับการเคลื่อนไหวแต่ละครั้ง ทำ
- ถ้าการเคลื่อนไหวเหมือนกับ "N" แล้ว
- temp_coord[1] :=temp_coord[1] + 1
- มิฉะนั้นเมื่อการเคลื่อนไหวเหมือนกับ "S" แล้ว
- temp_coord[1] :=temp_coord[1] - 1
- มิฉะนั้นเมื่อการเคลื่อนไหวเหมือนกับ "E" แล้ว
- temp_coord[0] :=temp_coord[0] + 1
- มิฉะนั้นเมื่อการเคลื่อนไหวเหมือนกับ "W" แล้ว
- temp_coord[0] :=temp_coord[0] - 1
- ถ้าการเคลื่อนไหวเหมือนกับ "N" แล้ว
- คืนค่า True เมื่อ temp_coord[0] เหมือนกับ coord[0] และ temp_coord[1] เหมือนกับ ascoord[1] มิฉะนั้นจะเป็นเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, moves, coord): temp_coord = [0,0] for move in moves: if move == "N": temp_coord[1] += 1 elif move == "S": temp_coord[1] -= 1 elif move == "E": temp_coord[0] += 1 elif move == "W": temp_coord[0] -= 1 return temp_coord[0] == coord[0] and temp_coord[1] == coord[1] ob = Solution() moves = ['N','N','E','E','S'] coord = [2,1] print(ob.solve(moves, coord))
อินพุต
['N','N','E','E','S'], [2,1]
ผลลัพธ์
True