fizzbuzz問題
移転しました。
ネットが無い環境で手書きでややパニクりながら解いてみたが、いかに日頃からWEBのお世話になってるかを痛感。
※pythonとperlの文法ごちゃになっていたなぁ。
なので答えをググらないで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
ググるばかりじゃなくて、日頃から頭の体操は大切だと思いましたとさ。