Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでロボットが目標位置に到達できるかどうかをチェックするプログラム


現在、位置(0、0)(デカルト平面)に座っているロボットがあるとします。 N(北)、S(南)、W(西)、およびE(東)を含む、実行可能な移動のリストがある場合。宛先座標(x、y)に到達できるかどうかを確認する必要があります。

したがって、入力がmoves =['N'、'N'、'E'、'E'、'S']、(x、y)=(2,1)のような場合、出力はTrueになります。

Pythonでロボットが目標位置に到達できるかどうかをチェックするプログラム

これを解決するには、次の手順に従います-

  • 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
  • temp_coord[0]がcoord[0]と同じで、temp_coord[1]がascoord[1]と同じ場合はTrueを返し、それ以外の場合はfalseを返します。

理解を深めるために、次の実装を見てみましょう-

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

  1. Pythonで訪問した場所を移動し続けることでロボットが目標に到達できることを確認するプログラム

    現在、位置(0、0)(デカルト平面)に座っているロボットがあるとします。 N(北)、S(南)、W(西)、E(東)を含む、移動可能な移動のリストがある場合。ただし、ロボットが以前の場所に到達した場合、ロボットは新しい未訪問の場所に到達するまで同じ方向に移動し続けます。移動後、(x、y)座標で終了するかどうかを確認する必要があります。 したがって、入力が次のような場合 move =[N、N、E、N、W、S]、coord =[0、-1]の場合、ロボットは2つ進むため、出力はTrueになります。上、右、上、左、下、現在の位置にアクセスすると下に移動し、次にその場所にもアクセスし、再び下に移動

  2. Pythonで単語のリストによってターゲットを綴ることができるかどうかをチェックするプログラム

    numsと呼ばれる数のリストと別の数kがあるとします。インデックスkと任意のインデックスiから開始する場合、正確にnums[i]ステップ数だけ左または右に進むことができます。リストの最後に到達できるかどうかを確認する必要があります。 したがって、入力がnums =[0、0、2、1、3、3、1、1] k =2の場合、インデックス2から開始してから、インデックス4にジャンプするかのように、出力はTrueになります。次に、最後のインデックス7にジャンプします。 これを解決するために、次の手順に従います- n:=numsのサイズ 訪問:=サイズnのリストで0を入力 tovisit