初めてqiitaで何を書けばいいのかわからないので、paizaの演習問題を書いてみる。
要件
標準入力で 「ストライク」か「ボール」が入力される
ストライクが入力され、かつストライクが1、2の時は「strike!]
ボールが入力され、かつボールが1~3の時は「ball!」
ストライクが入力され、かつストライクが3つの時は「out!」
ボールが入力され、かつボールが4つの時は「four ball!」
ただし、バッターはバットを振らないこと前提
yakiu.php
<?php
$num=trim(fgets(STDIN));
$strike=0;
$ball=0;
for($i=1;$i<=$num;$i++){
$pitch=trim(fgets(STDIN));
if($pitch==='strike'){
$strike++;
if($strike===3){
echo 'out!'.PHP_EOL;
break;
}else{
echo 'strike!'.PHP_EOL;
}
}
if($pitch==='ball'){
$ball++;
if($ball===4){
echo 'four ball!'.PHP_EOL;
break;
}else{
echo 'ball!'.PHP_EOL;
}
}
}
?>
投球後の結果の処理を解説していくと
yakiu.php
<?php
for($i=1;$i<=$num;$i++){
$pitch=trim(fgets(STDIN)); //投球の結果を受け取る
if($pitch==='strike'){
$strike++; //ストライクなら$strikeが一つ増える
if($strike===3){ //ストライクのカウントによって条件分岐
echo 'out!'.PHP_EOL;
break; //バッターが合うとなったので抜け出す
}else{
echo 'strike!'.PHP_EOL;
}
}
?>
おまけ
せっかくなのでファールも加えてきた
ファールの要件
ファールが入力され、かつストライクが0、1の時はストライクが一つ増える
ファールが入力され、かつストライクが2の時は変化なし
yakiu.php
<?php
$num=trim(fgets(STDIN));
$strike=0;
$ball=0;
for($i=1;$i<=$num;$i++){
$pitch=trim(fgets(STDIN));
if($pitch==='strike'){
$strike++;
if($strike===3){
echo 'out!'.PHP_EOL;
break;
}else{
echo 'strike!'.PHP_EOL
}
}
//ここから追加
if($pitch==='foul'){
if($strike===2){
echo 'foul!'.PHP_EOL;
}else{
echo 'foul!'.PHP_EOL;
$strike++;
}
}
//ここまで
if($pitch==='ball'){
$ball++;
if($ball===4){
echo 'fourball!'.PHP_EOL;
break;
}else{
echo 'ball!'.PHP_EOL;
}
}
}
?>
入力値
8
ball
strike
foul
ball
foul
foul
ball
strike
出力値
ball!
strike!
foul!
ball!
foul!
foul!
ball!
out!