FizzBuzz問題
私と同様、この著者は、プログラミングの仕事への応募者200人中199人はコードがまったく書けないということで苦労している。繰り返すが、彼らはどんなコードも書けないのだ。
応募全体で見ればそんな感じでしょう。自分の経験を振り返っても納得。入社まで辿り着いたとしても、その中でプログラムを書ける人が10%程度なのは神に誓って真実。
で、RubyでFizzBuzz問題を書いてみる。
はてブを見るとワンライナーをうまく書く人が多くて感心してしまう。
C/C++/Javaにどっぷりだったわたしには、まだスクリプト言語を手足のように使うことはできない。
自分なりに書こう・・・あれこれ弄っていたら3分過ぎてました。orz
for i in 1..100 do d = "" d +="Fizz" if i % 3 == 0 d +="Buzz" if i % 5 == 0 d += i.to_s if d == "" puts d end
この方式だと、Rubyなら配列を使った方が綺麗かな。
for i in 1..100 do d = [] d<<"Fizz" if i % 3 == 0 d<<"Buzz" if i % 5 == 0 d<<i if d.length == 0 puts d.join end
ビュー用に別オブジェクトを作るのが、そこはかとなく嬉しい。
途中経過を配列に溜めているので仕様追加があっても基本構造はこのままでOKですから保守性もバッチリですどうですかわたしを雇いませんか、みたいなオーラが出ていませんかそうですか。
この問題、なにも考えずにif文を羅列すれば1分だけれど、ちょっとでも考え始めると「短くするには!」「もっと工夫しなくちゃ!」みたいな妄念が入ってきて手が止まる。出来上がるまでを観察していると人それぞれの個性が出てすごく面白いだろうなあ。