WebCli管理人のブログ

アプリ紹介ブログ「WebCli」のことや、雑談など

FizzBuzz問題って微妙じゃない?

さて、今日は雑談。

 

プログラマの問題で、FizzBuzz問題ってあるじゃないですか?
プログラマの資質がわかる、ふるい判定として有名ですが、
あれ、解けない人って本当にいるのでしょうか?
(私の経験上、解けなかった人がいないので。。)

 

もう少し難しい問題として、「うるう年を解く問題」をおすすめしたいと思います。
うるう年とは、「2月29日がある年」のことです。具体的には以下のような内容です。

 

■問題
 年(西暦)を引数として受け取り、
 うるう年であればTrue、そうでなければFalseを返す関数を作成せよ。

 ・年が4で割り切れるときはうるう年である
 ・年がただし、100で割り切れる場合はうるう年でない
 ・年がただし、400で割り切れる場合はうるう年である

 

この問題をプログラマの方に出すと

数行のシンプルなコードで書ける人と、そうでない人に分かれます。


シンプルなコードの正解例は以下の通り(pythonで書いています)。

 

def is_leap_year(year):
    ret = year % 4 == 0
    ret = year % 100 != 0
    ret = ret or year % 400 == 0
    return ret

 

問題文に書かれたことをそのまま表現していて、非常にシンプルなコードです。戻り値用の変数(ret)を定義しているのがテクニックというかコツがあるので、経験の少ない方はこのカードは書けませんが、変数を使わない方法もあります。例えば以下のように書けば1行で済みますね。

 

def is_leap_year(year):
    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0

 

シンプルに書けない人はif文のネストで10行以上かけて解こうとします。。しかも微妙に間違ってたりします。。
私の経験上、そのような方と仕事をすると苦労しますね(笑)

 

一度、部下のプログラマの方に出してみると面白いと思います。