2007年5月11日

Fizz-Buzzで弾く

どうしてプログラマに・・・プログラムが書けないのか?

あちこちでこんなページが話題となっていた。
プログラマを自称して応募してくる多くの人が実際には書けない、
ちょっとしたテストとしてこの「Fizz-Buzz問題」が挙げられている。

> 1から100までの数をプリントするプログラムを書け。
> ただし3の倍数のときは数の代わりに「Fizz」と、
> 5の倍数のときは「Buzz」とプリントし、
> 3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

2分以内に書くことを大前提として作ってみた。(PHP)

for($i=1;$i<100;$i++)
{
if($i%3 && $i%5){print "$i\n";}
else if($i%3){print "Buzz\n";}
else if($i%5){print "Fizz\n";}
else print "FizzBuzz\n";
}

まあ美しくスマートではないが出来た・・・かな?
じっくり考えてみると「3でも5でも割り切れない」なんて使わず
単純に「15で割り切れない」にすればよかった、とか、
コードの見た目の分かりやすさを考えるなら
割り切れないことを条件にせず、$i%5==0にすれば良かったとか、
flagを立ててcaseで分ければスマート?とか思うところはあるけど、
いろんな答えがあるのがコーディング、とりあえずは正解だろう。

ていうか、PHPは自分の生業だから出来て当然です・・・
でも一番最初はforのパラメータの順番を間違えて
いきなり無限ループしちゃったことは内緒で(笑)

出来ないのに出来ると思い込んで応募する、
なんとかなると思って応募する人が多いってのはよく聞く。
このテストはコードの書き方を知ってるかどうかはもちろん、
論理的な組み立てが出来るかを調べるものなんだろうね。

PerlやC/C++、JavaScriptもできるってことになってるが、
PHPと違って細かい文法を忘れてるなぁ・・・(^^;

0 コメント:

コメントを投稿