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
- height [i] mod jは0と同じですが、
- j:=j + 1
- height [i] mod jが0と同じ場合、
- height [i]が1と同じでない場合、
- b [i]:=b [i] + 1
- height [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
-
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
-
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)