問題: 野球のストライクとボールのコール
入力: 投球数 N
と各投球の結果 s_1
から s_n
(strike
または ball
)
出力:
- ストライクが 1 〜 2 つたまったとき →
"strike!"
- ストライクが 3 つたまったとき →
"out!"
- ボールが 1 〜 3 つたまったとき →
"ball!"
- ボールが 4 つたまったとき →
"fourball!"
アプローチ:
- 標準入力から投球数
N
と各投球の結果を読み込む - ストライクとボールのカウントを初期化
- 各投球結果を基にカウントを更新し、適切なコールを出力
コード:
# 標準入力からデータを読み込む
import sys
input = sys.stdin.read().strip().split()
N = int(input[0]) # 投球数
throws = input[1:N + 1] # 投球結果リスト
# ストライクとボールのカウントを初期化
strike_count = 0
ball_count = 0
# 各投球結果に対して適切なコールを出力
for throw in throws:
if throw == "strike":
strike_count += 1
if strike_count == 3:
print("out!")
break
else:
print("strike!")
elif throw == "ball":
ball_count += 1
if ball_count == 4:
print("fourball!")
break
else:
print("ball!")
コードの説明:
-
データの読み込み:
-
sys.stdin.read().strip().split()
で標準入力からデータを読み込み、スペース区切りで分割します。 - 最初の値を投球数
N
として整数に変換。 - 残りの値を投球結果リスト
throws
に格納。
-
-
カウントの初期化:
-
strike_count
とball_count
を 0 に初期化。
-
-
投球結果の処理:
- 各投球結果
throw
を順に処理。 -
throw
が"strike"
の場合、strike_count
を増加させ、3 つに達したら"out!"
を出力してループを終了。そうでなければ"strike!"
を出力。 -
throw
が"ball"
の場合、ball_count
を増加させ、4 つに達したら"fourball!"
を出力してループを終了。そうでなければ"ball!"
を出力。
- 各投球結果
このプログラムは、与えられた投球結果に基づいてストライクとボールのカウントを更新し、適切なコールを出力します。