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

ミニオンゲームの勝者のスコアと名前を見つけるPythonプログラム


AmalとBimalの2人のプレーヤーがいるとします。彼らはゲームをしている。ゲームのルールは次のとおりです-

  • 両方のプレーヤーの文字列は同じです。

  • どちらもsの文字を使用して部分文字列を作成する必要があります。

  • Bimalは子音で始まる単語を作成する必要があります。

  • アマルは母音で始まる単語を作らなければなりません。

  • 両方のプレーヤーがすべての可能なサブストリングを作成すると、ゲームは終了します。

これで、スコアリング基準は次のようになります。プレーヤーは、文字列sに部分文字列が出現するたびに1ポイントを獲得します。このゲームの勝者と彼のスコアを見つける必要があります。

したがって、入力がs ="BANANA"のような場合、出力はBimal、12になります。

単語:BANANA
アマル
Bimal(WINNER)
サブストリング
スコア
サブストリング
スコア
A
3
B
1
AN
2
N
2
ANA
2
BA
1
ANAN
1
NA
2
ANANA
1
禁止
1


NAN
1


BANA
1


NANA
1


バナナ
1


バナナ
1
合計9
合計12

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

  • 母音:=母音のセット
  • p1:=0
  • p2:=0
  • 単語のインデックスiと文字cごとに、
    • cが母音の場合、
      • p2:=p2+単語のサイズ-i
    • それ以外の場合、
      • p1:=p1+単語のサイズ-i
  • p1> p2の場合、
    • return'Bimal'、p1
  • それ以外の場合、p2> p1の場合、
    • return'Amal'、p2
  • それ以外の場合、
    • return'Draw'

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

def solve(word):
   vowels = set('AEIOU')
   p1 = 0
   p2 = 0
   for i, c in enumerate(word):
      if c in vowels:
         p2 += len(word) - i
      else:
         p1 += len(word) - i
   if p1 > p2:
      return 'Bimal', p1
   elif p2 > p1:
      return 'Amal', p2
   else:
      return 'Draw'

word = "BANANA"
print(solve(word))

入力

"BANANA"

出力

('Bimal', 12)

  1. Pythonを使用して配列ゲームの勝者を見つけるプログラム

    arrという配列があり、これには一意の要素が含まれており、別の値kもあるとします。ここで、配列の最初の2つの要素を取得するゲームについて考えてみます。各ターンで、arr[0]とarr[1]を比較します。大きい方の値が優先され、位置0に留まり、小さい方の値が配列の最後に移動します。このゲームは、値がk回連続で勝ったときに終了します。アレイから勝者を見つける必要があります。 したがって、入力がarr =[1,5,6,3,4,2]で、k =3の場合、出力は6になります。 ラウンド1、arr =[1,5,6,3,4,2]、勝者5、5の勝ち数は1です ラウンド2、arr =[5,6,3,4

  2. Pythonでi、j、k個のx、y、z文字のサブシーケンスの数を見つけるプログラム

    「x」、「y」、「z」の文字列sがあるとすると、i個の「x」文字、j個の「y」文字、続いて続くサブシーケンスの数を見つける必要があります。 k個の「z」文字(i、j、k≥1)。 したがって、入力がs =xxyzの場合、出力は3になります。これは、2つのxyzと1つのxxyzを作成できるためです これを解決するには、次の手順に従います。 n:=sのサイズ x:=0、y:=0、z:=0 0からnの範囲のiの場合、実行 カウント:=0 s[i]がxと同じ場合、 x:=x * 2 x:=x + 1 s[i]がyと同じ場合、 y:=y