読者です 読者をやめる 読者になる 読者になる

剰余演算子を使わない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 ",";

		}

出典
TRANSLATION LOG FizzBuzzを剰余演算子(%)なしでやってみた(PHP)