ウェブ家の備忘録

ウェブデザイナーの備忘録

PHP : FizzBuzz

 いにしえのFizzBuzz問題を専門時代ぶりにやってみました。

問題内容
1から100までの数字を順番に表示、
・その数が3で割り切れるなら代わりに「Fizz」と表示する。
・その数が5で割り切れるなら代わりに「Buzz」と表示する。
・その数が3でも5でも割り切れるなら代わりに「FizzBuzz」と表示する。

私の解答

解答1 よくある解答
<?php
for($i=1;$i<=100;$i++){
  if($i%3==0 && $i%5==0){echo "FizzBuzz";}
  elseif($i%3==0){echo "Fizz";}
  elseif($i%5==0){echo "Buzz";}
  else{echo $i;}
  echo "<br>";
}
?>

解答2 FizzBuzzをフラグ管理
<?php
for($i=1;$i<=100;$i++){
  $numDisp=true;
  if($i%3==0){echo "Fizz"; $numDisp=false;}
  if($i%5==0){echo "Buzz"; $numDisp=false;}
  if($numDisp){echo $i;}
  echo "<br>";
}
?>

解答3 最適化で煮詰まった解答
<?php
for($i=1;$i<=100;$i++){
  if($i%3==0){echo "Fizz";}
  if($i%5==0){echo "Buzz";}
  if($i%3!=0 && $i%5!=0){echo $i;}
  echo "<br>";
}
?>

 同じ表示でも考え方が違うのが楽しいですね。
 凝った考えの解答2・3よりも、皆がよくやる解答1の方が一番可読性が高い気がします。なんか悔しい。