Pythonでの野球ゲーム
野球のゲームポイントレコーダーがあるとします。文字列のリストがあります。各文字列は、次の4つのタイプのいずれかになります-
- 整数(1ラウンドのスコア)-このラウンドで獲得したポイント数を示します。
- "+"(1ラウンドのスコア)-このラウンドで獲得したポイントが、最後の2つの有効なラウンドのポイントの合計であることを示します。
- "D"(1ラウンドのスコア)-このラウンドで取得したポイントが、最後の有効なラウンドのポイントの2倍のデータであることを示します。
- 「C」(ラウンドのスコアではない操作)-取得した最後の有効なラウンドのポイントが無効であり、削除する必要があることを示します。
各ラウンドの操作は永続的であり、前のラウンドと後のラウンドに影響を与える可能性があることに注意してください。すべてのラウンドで獲得できるポイントの合計を見つける必要があります。
したがって、入力が["5"、 "2"、 "C"、 "D"、 "+"]の場合、出力は30になります。これは実際には
- ラウンド1-5ポイントを獲得できました。合計は5です。
- ラウンド2−2ポイント獲得できました。合計は7です。
- 操作1-ラウンド2のデータが無効でした。合計は5です。
- ラウンド3-10ポイントを獲得できました。合計は15です。
- ラウンド4− 5 + 10=15ポイントを獲得できます。合計は30です。
これを解決するには、次の手順に従います-
- スタック:=空のリスト
- opsの各iについて、
- iが"+"と同じ場合、
- 最初の:=スタック[スタックのサイズ-1]、2番目の:=スタック[スタックのサイズ-2]
- 最後にスタックに(最初と2番目)を挿入します
- それ以外の場合、iが「D」と同じ場合は
- 最後に(スタックの最後の要素* 2)をスタックに挿入します
- それ以外の場合、iが「C」と同じ場合は
- スタックから最後の要素を削除する
- それ以外の場合、
- 最後にiをスタックに挿入します
- iが"+"と同じ場合、
- スタックのすべての要素の合計を返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def calPoints(self, ops): stack = [] for i in ops: if i == "+": first, second = stack[len(stack) - 1], stack[len(stack) - 2] stack.append(first + second) elif i == "D": stack.append(stack[-1] * 2) elif i == "C": stack.pop() else: stack.append(int(i)) return sum(stack) ob = Solution() print(ob.calPoints(["5","2","C","D","+"]))
入力
["5","2","C","D","+"]
出力
30
-
Pythonの二分木ぬりえゲーム
二分木でターン制のゲームをプレイする2人のプレーヤーがいるとします。この二分木のルートとツリー内のノード数nがあります。ここで、nは奇数であり、各ノードには1からnまでの異なる値があります。最初に、最初のプレーヤーは値xに1 <=x <=nの名前を付け、2番目のプレーヤーは値yに1 <=y <=nの名前を付け、y!=xのような条件を保持します。最初のプレーヤーはノードを値xの赤で色付けし、2番目のプレーヤーはノードを値yの青で色付けします。その後、プレイヤーは最初のプレイヤーから順番に順番に進みます。各ターンで、プレーヤーは自分の色のノード(プレーヤー1の場合は赤、プレーヤー2の場合は青)を取
-
PythonでTkinterを使用したカラーゲーム
GUIアプリケーションの開発では、tkinterは非常に人気があり簡単です。 tkinterを使用すると、GUIゲームを簡単に開発できます。 ここでもカラーゲームの開発を試みています。このゲームでは、プレーヤーは画面に表示される単語の色を入力する必要があるため、スコアが1つ増えます。このゲームをプレイする合計時間は、30秒で、このゲームで使用される色は、赤、青、緑、ピンク、ブラック、イエロー、オレンジ、ホワイト、パープル、ブラウン。インターフェイスには、さまざまな色の名前がさまざまな色で表示されます。ゲームに勝つには、ユーザーは色を識別し、正しい色の名前を入力する必要があります。 サンプルコ