1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

真剣になでしこで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を書いてみました。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?