剰余演算子を使わないFizzBuzz
面接でよく紙に書かされるこれ。
剰余演算子禁止のルールが課せられることがあるので、対処法を頭に入れておこう・・・。
結合して出力するこれがシンプルでその場で書きやすいと思った。
計算量は多いので評価は低くなるのかな?
$fizz = ""; $buzz = ""; $num_3 = 3; $num_5 = 5; for ($i=0;$i<100;$i++,$fizz="",$buzz="") { if($i === $num_3) { $fizz = "Fizz"; $num_3 += 3; } if($i === $num_5) { $buzz = "Buzz"; $num_5 += 5; } if($fizz === $buzz) { echo $i; } else { echo $fizz.$buzz; } echo ","; }
こっちのほうが計算量少ない。
//3*n $num_3 =1; //5*n $num_5 =1; for($i=0;$i<100;$i++) { if(($i/3) === $num_3 && ($i/5) === $num_5) { echo "FizzBuzz"; $num_3 ++; $num_5 ++; } else if(($i/3 === $num_3)) { echo "Fizz"; $num_3 ++; } else if(($i/3) === $num_5) { echo "Buzz"; $num_5 ++; } else { echo $i; } echo ","; }