ミニオンゲームの勝者のスコアと名前を見つける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
- cが母音の場合、
- 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) -
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
-
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