おつかれさまです。今回はPHPを使って、Fizz Buzz問題を解いてみようと思います。そもそもFizz Buzz問題とは、「3の倍数の時に「Fizz」、5の倍数の時に「Buzz」、15の倍数のときに「Fizz Buzz」と出力させる処理を書く」問題です。Wikipediaによると元は英語圏の言葉遊びみたいです。それでは、PHPで解いていきます!
目次
for文 + if文
多分一番ベーシックなやつです。for文で1ずつ加算しながら、if文で出力する文字を判断していくやつです。
for ($i = 1; $i <= 30; $i++) {
if ($i % 15 === 0) {
echo 'Fizz Buzz' . '<br>';
} elseif ($i % 5 === 0) {
echo 'Buzz' . '<br>';
} elseif ($i % 3 === 0) {
echo 'Fizz' . '<br>';
} else {
echo $i . '<br>';
}
}
for文 + switch文
理屈は一緒!if文をswitch文に変更したもの。
for ($i = 1; $i <= 30; $i++) {
switch (true) {
case $i % 15 === 0:
echo 'FizzBuzz' . '<br>';
break;
case $i % 5 === 0:
echo 'Buzz' . '<br>';
break;
case $i % 3 === 0:
echo 'Fizz' . '<br>';
break;
default:
echo $i . '<br>';
}
}n
while文 + switch文
for文をswitch文で表現したもの。
// 出力する変数を定義
$i = 1;
while ($i <= 30) {
switch (true) {
case $i % 15 === 0:
echo 'FizzBuzz' . '<br>';
break;
case $i % 5 === 0:
echo 'Buzz' . '<br>';
break;
case $i % 3 === 0:
echo 'Fizz' . '<br>';
break;
default:
echo $i . '<br>';
}
$i++;
}
終わりに
こういう問題楽しいですね!プログラミングしている感が段違い!ただ、今回の私の答えは、if文とfor文の処理をいろんなものに置き換えただけで、根本的には1つしか答えてないんですよね、、やろうと思えば、for文、if文、while文、switch文の組み合わせでもっとパターンつくれますし。。
多分別のロジックがあるはずなのですよね。。、今の私では思いつきませんでした。。。力不足。。アルゴリズムもちゃんと勉強して、また1年後とかにリベンジしようと思います!ではまた次の記事で。
コメント