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

Pythonでチェスの騎士が目標位置に到達するための最小ステップを見つけるプログラム


2つの値rとcがあるとします。チェスの騎士が無限に大きなチェス盤の最初の座標(0、0)に配置されている場合、その場所(r、c)に到達するために必要な最小移動回数を見つける必要があります。騎士はチェスと同じ動きのスタイルに従います。水平方向に2マス、縦に1マス、または縦に2マス、横に1マス移動します。

したがって、入力がr =6、c =1の場合、出力は3になります。赤は初期位置、緑は最終位置、黄色は中間ステップです。

Pythonでチェスの騎士が目標位置に到達するための最小ステップを見つけるプログラム

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

  • r
  • rとcを入れ替える
  • (r、c)が(1、0)と同じ場合、
    • リターン3
  • (r、c)が(2、2)と同じ場合、
    • リターン4
  • デルタ:=r-c
  • c>デルタの場合、
    • return delta-2 *((delta --c)/ 3の商)
  • それ以外の場合、
    • return delta-2 *((delta --c)/ 4の商)
  • 理解を深めるために、次の実装を見てみましょう-

    class Solution:
       def solve(self, r, c):
          if r < c:
             r, c = c, r
          if (r, c) == (1, 0):
             return 3
          if (r, c) == (2, 2):
             return 4
          delta = r - c
          if c > delta:
             return delta - 2 * ((delta - c) // 3)
          else:
             return delta - 2 * ((delta - c) // 4)
    ob = Solution()
    r = 6
    c = 1
    print(ob.solve(r, c))

    入力

    6, 1

    出力

    3

    1. Pythonを使用してすべてのノードに到達するための頂点の最小数を見つけるプログラム

      n個の頂点とノードに0からn-1までの番号が付けられた有向非巡回グラフがあるとします。グラフはエッジリストで表されます。ここで、edges [i] =(u、v)はノードuからノードv。グラフ内のすべてのノードに到達できる頂点の最小セットを見つける必要があります。 (頂点は任意の順序で返すことができます)。 したがって、入力が次のような場合 これらの2つの頂点は他のどの頂点からも到達できないため、出力は[0,2,3]になります。したがって、それらから開始すると、すべてをカバーできます。 これを解決するには、次の手順に従います- n:=エッジのサイズ all_nodes:=

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

      現在、位置(0、0)(デカルト平面)に座っているロボットがあるとします。 N(北)、S(南)、W(西)、およびE(東)を含む、実行可能な移動のリストがある場合。宛先座標(x、y)に到達できるかどうかを確認する必要があります。 したがって、入力がmoves =[N、N、E、E、S]、(x、y)=(2,1)のような場合、出力はTrueになります。 これを解決するには、次の手順に従います- temp_coord:=[0,0] 移動の移動ごとに、 移動が「N」と同じ場合、 temp_coord [1]:=temp_coord [1] + 1 それ以外の場合、移動が「S」と同じ