FizzBuzz問題
翻訳記事『どうしてプログラマに・・・プログラムが書けないのか?』で紹介されている簡単なプログラミングの問題「FizzBuzz問題」が、おもにはてなブックマークで盛り上がりを見せている。
ちなみに、FizzBuzz問題とは、こういうの。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。簡単なので、「ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。」とのこと。
さぁ皆の衆、レッツトライ!
・・・と、人をたきつけるだけというのも体裁が悪いので、ビクビクしながらRubyで書いてみた。コーディングスピード重視なので、かっこいいロジックを書こうとか微塵も考えていない。
(1..100).each { |i| line = "" if i % 3 == 0 line << "Fizz" end if i % 5 == 0 line << "Buzz" end line = i if line == "" puts line }
所要時間はだいたい2,3分。うーむ、微妙なクリアタイムだ。ちゃんと測ればよかった。採用面接で出す問題らしいが、そんな緊張を強いられる状況でこのタイムを出せるかは怪しいなぁ。
むこうしばらく採用面接にかかわることはないだろうが、機会があれば使ってみたいね、このての問題。
プログラマの採用面接でプログラミングの問題を出すという話になると、「そんな問題では仕事ができることを証明できない」と言い出す輩が出てくる。まったくそのとおりであるが、それは問題の使い方を間違っている。この手の簡単なプログラミング問題は、仕事ができることを証明するためではなく、仕事ができないことを手っとり早く明らかにするために使うのだ。