fizzbuzz問題

移転しました。

ネットが無い環境で手書きでややパニクりながら解いてみたが、いかに日頃からWEBのお世話になってるかを痛感。
pythonperlの文法ごちゃになっていたなぁ。
なので答えをググらないでPC上でリベンジ

まず最初に思いついたのがこれ。

list = range(1,100)
fizz = "fizz"
buzz = "buzz"
for val in list:
    if val % 15 == 0: print fizz + buzz
    elif val % 5 == 0: print buzz
    elif val % 3 == 0: print fizz
    else: print val

なんかいろいろと無駄が多すぎるので、直してみた。
三項演算子を使って文字列連結をし、わざわざメモリ食う必要のないリスト削除

j = 1
while j <= 100:
    fizz = "" if(j % 3) else "Fizz"
    buzz = "" if(j % 5) else "Buzz"
    print fizz + buzz if fizz + buzz else j
    j += 1

もう少し短くするとこんな感じだろうか。

j = 1
while j <= 100:
    fizzbuzz = ("" if(j % 3) else "Fizz") + ("" if(j % 5) else "Buzz")
    print fizzbuzz if fizzbuzz else j
    j += 1

このあたりでググってみると、いや〜やはりすごいのがありますね。

for i in range(1,101):print"Fizz"*(i%3<1)+"Buzz"*(i%5<1)or i

http://d.hatena.ne.jp/tenkoma/20070509/1178717333
ググるばかりじゃなくて、日頃から頭の体操は大切だと思いましたとさ。