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

Pythonでスコアがバイナリ文字列として与えられるゲームの勝者を探す


バレーボールの試合のスコアを表すバイナリ文字列が1つあるとすると、次の条件に基づいて試合の勝者を見つける必要があります-

  • 2つのチームが対戦し、両方のチームが14ポイントに達した場合を除いて、最初に15ポイントを獲得したチームが勝者になります。

  • その時点で両方のチームが14ポイントに達すると、2ポイントのリードを維持しているチームが勝者になります。

指定されたバイナリ文字列から、0はチームがポイントを失うことを表し、1はチームがポイントを獲得することを示します。チームが試合に勝ったか負けたかを確認する必要があります。

したがって、入力がscore ="1001100110111001110011011"のような場合、出力はチームが勝ちます

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

  • score_cnt:=[0,0]

  • 0からスコアのサイズまでの範囲のiについては、実行してください

    • pos:=ASCII of(score [i])-ASCII of( '0')

    • score_cnt [pos]:=score_cnt [pos] + 1

    • score_cnt[0]がnおよびscore_cnt[1]− n -1と同じである場合、

      • 「チームロスト」を返す

    • score_cnt[1]がnと同じでscore_cnt[0]

      • 「チームが勝った」を返す

    • score_cnt[0]がn-1と同じで、score_cnt[1]がn-1と同じ場合、

      • score_cnt [0]:=0

      • score_cnt [1]:=0

      • ループから出てきます

  • i:=i + 1

  • iからスコアのサイズまでの範囲のiについては、実行してください

    • pos:=ASCII of(score [i])-ASCII of( '0')

    • score_cnt [pos]:=score_cnt [pos] + 1

    • if | score_cnt [0] --score_cnt [1] | 2と同じで、

      • score_cnt [0]> score_cnt [1]の場合、

        • 「チームロスト」を返す

      • それ以外の場合

        • 「チームが勝った」を返す

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

def predictWinner(score, n):
score_cnt = [0,0]
   for i in range(len(score)):
      pos = ord(score[i]) - ord('0')
      score_cnt[pos] += 1
      if (score_cnt[0] == n and score_cnt[1] < n - 1):
         return "Team lost"
      if (score_cnt[1] == n and score_cnt[0] < n - 1):
         return "Team won"
      if (score_cnt[0] == n - 1 and
         score_cnt[1] == n - 1):
         score_cnt[0] = 0
         score_cnt[1] = 0
         break
   i += 1
   for i in range(i, len(score)):
      pos = ord(score[i]) - ord('0')
      score_cnt[pos] += 1
      if (abs(score_cnt[0] - score_cnt[1]) == 2):
         if (score_cnt[0] > score_cnt[1]):
            return "Team lost"
         else:
            return "Team won"
score = "1001010101111011101111"
n = 15
print(predictWinner(score, n))

入力

"1001010101111011101111"

出力

Team won

  1. Pythonで特定の二分木で最大の完全なサブツリーを見つける

    二分木があるとしましょう。この二分木で最大の完全なサブツリーのサイズを見つける必要があります。私たちが知っているように、完全な二分木は、おそらく最終レベルなしですべてのレベルが完全に満たされ、最終レベルに可能な限りすべてのキーが残っている場合、二分木です。 したがって、入力が次のような場合 その場合、出力はサイズとして4になり、順序どおりの走査は10、45、60、70になります。 これを解決するには、次の手順に従います- isComplete、isPerfectなどのいくつかのパラメーターを使用して戻り型を定義します。これらは最初はfalseで、次にsizeとrootTree、

  2. Pythonで特定の二分木で最大の完全なサブツリーを見つける

    特定の二分木があるとします。与えられた二分木で最大のパーフェクトサブツリーのサイズを見つける必要があります。私たちが知っているように、完全な二分木は、すべての内部ノードに2つの子があり、すべての葉が同じレベルにある二分木です。 したがって、入力が次のような場合 その場合、出力は3になり、サブツリーは これを解決するには、次の手順に従います- RetTypeと呼ばれる1つのブロックを定義します。これは、isPerfect、height、rootTreeを保持し、最初はすべて0です get_prefect_subtree()という関数を定義します。これはルートを取りま