真剣になでしこでFizzBuzz問題を解いています。
そもそもFizzBuzz問題とはなんでしょうか。
問題例 1から100までの数を出力するプログラムを書いてください。ただし、3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」と表示してください。3と5の倍数の時は「FizzBuzz」と表示してください。
実は、既に以前マイナビ様の連載21回目でなでしこ真剣にFizzBuzz問題を解いたことがあります。この記事ではとても真剣にFizzBuzz問題に取り組み、プログラムの解説を書きました。
詳細はこちらは読んで貰うとして、今回は、解説もほどほどにいろいろなバリエーションを紹介したいと思います。
オーソドックスな答え
こちらの簡易エディタを使えばWebブラウザ上でプログラムを実行できます。対象は「なでしこ3」を想定しています。
以下のプログラムはオーソドックスな答えです。問題を何も考えずに解くとこうなるでしょう。
Nを1から100まで繰り返す
もし、(N%3=0)かつ(N%5=0)ならば「FizzBuzz」と表示。
違えば、もし、N%3=0ならば「Fizz」と表示。
違えば、もし、N%5=0ならば「Buzz」と表示。
違えば、Nを表示。
ここまで。
関数を使って読みやすくする場合
そして、少し処理を関数化して読みやすくすると以下のようになります。
Nを1から100まで繰り返す
NでFizzBuzz処理して表示。
ここまで
●(Nで)FizzBuzz処理とは
もし(Nを15で割った余り)が0ならば「FizzBuzz」で戻る
もし(Nを3で割った余り)が0ならば「Fizz」で戻る
もし(Nを5で割った余り)が0ならば「Buzz」で戻る
Nで戻る
ここまで
ここまでは、上記の連載で紹介した内容です。
もっと真剣に取り組んだ場合
もっと、真剣に日本語プログラミング言語という特徴を掴んで作るとこうなります。
ある程度、自然な日本語として読むことができているのではないでしょうか!
100回、回数をFizzBuzz判定して表示。
●(Nを)FizzBuzz判定とは
もしNがFIZZBUZZならば「FizzBuzz」で戻る。
もしNがFIZZならば「Fizz」で戻る。
もしNがBUZZならば「Buzz」で戻る。
Nで戻る。
ここまで。
●(Nが)FIZZとは
(Nを3で割った余り)が0と等しい
ここまで
●(Nが)BUZZとは
(Nを5で割った余り)が0と等しい
ここまで
●(Nが)FIZZBUZZとは
それは((NがFIZZ)かつ(NがBUZZ))
ここまで
以上、なでしこでもっと美しくFizzBuzzを書いてみました。