FizzBuzz問題

どうしてプログラマに・・・プログラムが書けないのか? を読んで、書かずには居られない衝動にかられて書きました。

def FizzBuzz():
    for i in range(1, 100 +1):
        buf = ""
        if not i % 3 : buf += "Fizz"
        if not i % 5 : buf += "Buzz"
        if buf == "" : buf = str(i)
        print buf

なんとか2分以内に書けました。あ〜、よかった。

しかし、これだけでは格好悪いのでワンライナで書いてみます。

print [((not i % 15) and 'FizzBuzz') or ((not i % 3) and 'Fizz') or ((not i % 5) and 'Buzz') or i for i in range(1,101)]

・・・・こちらは書くのに 20分くらいかかってたり (^^;) 。失格です。

参考

IBM Developer 日本語版 : 大変申し訳ありません。このページは無効です。

Python は lambda 中に式しか書けないので、つらいのです。それを乗り越えるテクニック。