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

Pythonで漕ぎ手を減らすゲームの勝者を見つけるためのプログラム


配列の高さがあるとします。高さの異なるn個の異なる塔があります。アマルとビマルはゲームをしています。ゲームのルールは以下のとおりです

  • アマルは常に最初にプレイします

  • 各移動中に、現在のプレーヤーは高さXの塔を選択し、高さをY [1 <=Y

  • 動きのない人は誰でもゲームに負けます

勝者の名前を見つける必要があります。

したがって、入力がheight =[3,1,2]のような場合、初期の高さは{3,1,2}であるため、出力はBimalになります。アマルが塔の高さを2から1に下げると、ビマルは3を1減らすことができますが、アマルには動きがないため、ビマルが勝ちます。

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

  • 関数util()を定義します。これにはa、nが必要です
  • ans:=0
  • 0からn-1の範囲のiの場合、do
    • ans:=ans XOR a [i]
  • 回答を返す
  • メインの方法から次の手順を実行します
  • n:=高さのサイズ
  • b:=サイズnの配列で、0で埋めます
  • 0からn-1の範囲のiの場合、do
    • height [i]が1と同じ場合、
      • b [i]:=0
    • それ以外の場合
      • b [i]:=0
      • j:=2
      • root:=高さの平方根の床[i]
      • height[i]は1およびj<=rootと同じではありませんが、do
        • height [i] mod jが0と同じ場合、
          • height [i] mod jは0と同じですが、
            • b [i]:=b [i] + 1
            • height [i]:=高さの床[i] / j
        • j:=j + 1
      • height [i]が1と同じでない場合、
        • b [i]:=b [i] + 1
  • ans:=util(b、n)
  • ansが0と同じでない場合、
    • 「アマル」を返す
  • それ以外の場合、
    • 「Bimal」を返す

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

def util(a,n):
   ans = 0
   for i in range(n):
      ans = ans^a[i]

   return ans

def solve(height):
   n = len(height)
   b = [0 for i in range(n)]

   for i in range(n):
      if(height[i] == 1):
         b[i] = 0
      else:
         b[i] = 0
         j = 2

         root = int(pow(height[i],0.5))
         while(height[i] != 1 and j<=root):
            if(height[i]%j == 0):
               while(height[i]%j == 0):
                  b[i] += 1
                  height[i] = height[i]//j

            j += 1

         if(height[i] != 1):
            b[i] += 1

   ans = util(b, n)

   if(ans != 0):
      return "Amal"
   else:
      return "Bimal"

height = [3,1,2]
print(solve(height))

入力

[3,1,2]

出力

Bimal

  1. Pythonでポリゴンの領域を見つけるプログラム

    順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です return x1 * y2-y1 * x2 メインの方法から、次の手順を実行します N:=ポイントのサイズ (firstx、firsty):=points [0] (prevx、prevy):=(fir

  2. Pythonでポリゴンの周囲を見つけるプログラム

    順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)