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

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


AmalとBimalがゲームをしていると仮定します。彼らは数nを持ち、それが2の累乗であるかどうかをチェックします。もしそうなら、彼らはそれを2で割ります。そうでなければ、彼らはそれを次に小さい数で減らします。これも2の累乗です。数を1に減らした人は誰でもゲームに勝ちます。アマルは常にゲームを開始し、勝者の名前を見つける必要があります。

したがって、入力がn =19の場合、19は2の累乗ではないため、出力はAmalになります。したがって、Amalはそれを16に減らし、Bimalは2で除算して8になり、次にAmalは2で除算して次のようになります。 4、次にBimalが2になり、最後にAmalが分割して1になり、ゲームに勝ちます。

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

  • res:=0
  • n> 1の場合、do
    • b:=1
    • b * 2
    • b:=b * 2
  • n:=n-b
  • res:=res + 1
  • res mod 2が0と同じ場合、
    • 「アマル」を返す
  • それ以外の場合、
    • return'Bmal'
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(n):
       res = 0
       while(n > 1):
          b = 1
          while(b * 2 < n):
             b *= 2
          n -= b
          res += 1
       if res % 2 == 0:
          return 'Amal'
       else:
          return 'Bmal'
    
    n = 19
    print(solve(n))

    入力

    19
    

    出力

    Amal

    1. Pythonで繰り返される整数ゲームを削除して勝つための動きの数を見つけるためのプログラム

      2人の友人のAmalとBimalが、numsと呼ばれる番号のソートされたリストを使用してゲームをプレイしているとします。このゲームでは、1ターンで、アマルは任意の3つの数字を選択します。 Bimalはそれらの1つを削除し、次にAmalはそれらの1つを削除します。リストは奇数の要素から始まります。ここで、Amlaは、リストに繰り返し要素が含まれないようにするために必要なターン数を最小化することを望んでいます。Bimalは、ターン数を最大化することを望んでいます。アマルとビマルが最適に行動する場合、このゲームに必要なターン数を見つける必要があります。 したがって、入力がnums =[1、1、2、

    2. リスト内で最大数を見つけるPythonプログラム

      この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: