FizzBuzz テストをやってみる
どうしてプログラマに・・・プログラムが書けないのか?
それで、そういった類の開発者を見分けるための質問を作り始め、私が「Fizz-Buzz問題」と呼んでいる問題のクラスを考え出した。これはイギリスの学校の子供たちがよくやっている遊び(というかやらされている遊び)にちなんで名付けた。Fizz-Buzz問題の例はこんな感じだ。

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

Perl で
#!/opt/local/bin/perl

for (1..100){
print if (($_ % 3 != 0) && ($_ % 5) != 0);
print "Fizz" if ($_ % 3 == 0);
print "Buzz" if ($_ % 5 == 0);
print "\n";
}

Ruby で
#!/usr/bin/env ruby

(1..100).each{|n|
if (n % 3 != 0) and (n % 5 != 0) then
print n
end

if (n % 3 == 0) then
print "Fizz"
end

if (n % 5 == 0) then
print "Buzz"
end

puts ""
}


Scheme(gauche) で
(define (fizzbuzz n)
(cond ((and (zero? (remainder n 3)) (zero? (remainder n 5)))
(display "FizzBuzz"))
((zero? (remainder n 3))
(display "Fizz"))
((zero? (remainder n 5))
(display "Buzz"))
(else (display n)))
(newline)
(if (< n 101)
(fizzbuzz (+ n 1))))

(fizzbuzz 1)

 実際、あんまり簡単じゃない気がする。普段の平常心の状態なら大丈夫だけど、面接という緊張した場面だと、凄く混乱しそう。そして、答えを思いついても、もっとエレガントに書きたくなってしまって、ごちゃごちゃやってるうちに、わけが分からなくなってタイムアップとか、なんかそんなパターンの人が多そう。僕も、実際の面接でこの問題を出されたら、自信が無い。
[PR]
by fkmn | 2007-05-08 23:17 | IT
<< Second Life は E... 【感想】ラテン語の世界—ローマ... >>


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX