FizzBuzz問題(Arduino nano) | a24a24a24のブログ

a24a24a24のブログ

アメピグ残党。
釣り、温泉、お出かけ、パソコン。最近、電子工作。

プログラムのお話です。

 

 

ネットを眺めていたら、「FizzBuzz」という言葉が載っていました。

プログラムの力量をはかる、簡単な問題(テスト)らしいです。

昔は「10個の数字の並べ替え」=ソートのプログラムなんてのが定番でしたが

時代は変わったのね。

 

 

で、以下がFizzBuzz問題のルール。

どれどれ・・・。

 

・英語圏の言葉あそびゲーム

・1、2・・・と順番に数字を言う

・3の倍数の場合は「Fizz」と言う

・5の倍数の場合は「Buzz」と言う

・3の倍数かつ5の倍数の場合は「Fizz Buzz」と言う

 

 

はぁ。ふむ。

 

 

作ってみました。

Arduino IDEのC言語で作り、Arduino nanoで動かします。

自分は独学の素人なので、プログラムが拙く汚い(見せるのが恥ずかしい)人ですが

いつも通りの感覚で書きました。

 

 

 

 

頭にイメージした内容を、そのままプログラムに。

3とか5の倍数を条件フラグにして、二進数の2ビット4通りでいけるよね、

みたいに考えました。

安直にswitch()で場合分け。

 

そ、そんなに世間様から外れた書き方ではないと思うのですが・・・。

 

 

 

 

結果はこんな感じです。

まあ普通に動く。

 

 

 

・・・で。

この問題の真意ですが、Wikipediaを見てみると

 

「コードが書けないプログラマ志願者を見分ける手法」 らしいです。

おっそろしいですね。

Wikipediaには、もっと短く簡略化された回答例が載っています。

 

私はelse ifを連発するのが好きではないので、回答例はどうなのとか思いましたが!

switchで場合分けの方が、条件が増えたとき追加しやすいでしょと思いましたが!

その辺りを含めて、個人の経歴やクセを浮かび上がるようです。

 

 

 

「制限時間2分以内」の腕試し、なんて話も載っていました。

書き方を迷っているうちに時間が終わってしまいそう。

 

おしまい。

 

 

 

 

 

 

 

追記:

「まさか」と思って、Google検索でFizzBuzz問題 C言語の回答を30例ほど見てみましたが

自分のように2bitのフラグに見立ててswitch()で分岐させてる人は、一人もいませんでした。

なんでやねん!むしろこっちがルールの文章通りで、正解でしょ!

 

 

別解として自分ならば、以下のようにメインを一行にするかもしれません。

三項演算子、読みにくいですがやっていることはシンプル。

同じ結果が得られます。