プログラムのお話です。
ネットを眺めていたら、「FizzBuzz」という言葉が載っていました。
プログラムの力量をはかる、簡単な問題(テスト)らしいです。
昔は「10個の数字の並べ替え」=ソートのプログラムなんてのが定番でしたが
時代は変わったのね。
で、以下がFizzBuzz問題のルール。
どれどれ・・・。
・英語圏の言葉あそびゲーム
・1、2・・・と順番に数字を言う
・3の倍数の場合は「Fizz」と言う
・5の倍数の場合は「Buzz」と言う
・3の倍数かつ5の倍数の場合は「Fizz Buzz」と言う
はぁ。ふむ。
作ってみました。
Arduino IDEのC言語で作り、Arduino nanoで動かします。
自分は独学の素人なので、プログラムが拙く汚い(見せるのが恥ずかしい)人ですが
いつも通りの感覚で書きました。
頭にイメージした内容を、そのままプログラムに。
3とか5の倍数を条件フラグにして、二進数の2ビット4通りでいけるよね、
みたいに考えました。
安直にswitch()で場合分け。
そ、そんなに世間様から外れた書き方ではないと思うのですが・・・。
結果はこんな感じです。
まあ普通に動く。
・・・で。
この問題の真意ですが、Wikipediaを見てみると
https://ja.wikipedia.org/wiki/Fizz_Buzz
「コードが書けないプログラマ志願者を見分ける手法」 らしいです。
おっそろしいですね。
Wikipediaには、もっと短く簡略化された回答例が載っています。
私はelse ifを連発するのが好きではないので、回答例はどうなのとか思いましたが!
switchで場合分けの方が、条件が増えたとき追加しやすいでしょと思いましたが!
その辺りを含めて、個人の経歴やクセを浮かび上がるようです。
「制限時間2分以内」の腕試し、なんて話も載っていました。
書き方を迷っているうちに時間が終わってしまいそう。
おしまい。
追記:
「まさか」と思って、Google検索でFizzBuzz問題 C言語の回答を30例ほど見てみましたが
自分のように2bitのフラグに見立ててswitch()で分岐させてる人は、一人もいませんでした。
なんでやねん!むしろこっちがルールの文章通りで、正解でしょ!
別解として自分ならば、以下のようにメインを一行にするかもしれません。
三項演算子、読みにくいですがやっていることはシンプル。
同じ結果が得られます。