ミニオンゲームの勝者のスコアと名前を見つける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