Python でやってみた。
#!/usr/bin/env python #-*- coding:utf-8 -*- for i in range(100): j = i + 1 if j % 3 == 0: if j % 5 == 0: print "FizzBuzz" else: print "Fizz" elif j % 5 == 0: print "Buzz" else: print j
何のヒネリも無いコードで 6 分も掛かった、私はこの人の会社にはいけないようだ。
というか後で気がついたが
for j in range(1, 101):
と書けばいいことを忘れていた、しょんぼり。
リンク先を見ると本当に日本人はワンライナーが大好きなんだなーと思う。
海外で FizzBuzz を探すとだいたいどの言語でもこんな感じなんですけどね。
Geek School ? Get Hired With FizzBuzz
実際の話、ワンライナーで書けたところで実践に役立つとは思えない。
剰余(%記号等)を用いないなんて何が目的なのかさえ解らないのだが。
そんなことよりユーザー入力がまったく無いプログラムに凝ってどうするの?と。
まず fizz と buzz という整数を保持する変数を用意してユーザーに数値を入力させる。
fizz の倍数のときは数の代わりに「Fizz」
buzz の倍数のときは「Buzz」
fizz, buzz 両方の倍数の場合には「FizzBuzz」
どちらにも該当しないなら数値そのままの文字列
の値を返す関数を使って 1 から 100 までの数をプリントするプログラムを書け。
#!/usr/bin/env python #-*- coding:utf-8 -*- print "\nFizz と Buzz の値を指定してください" fizz = input("Fizz=") buzz = input("Buzz=") def fizzbuzz(n): if n % fizz == 0: if n % buzz == 0: return "FizzBuzz" else: return "Fizz" elif n % buzz == 0: return "Buzz" return str(n) for i in range(1, 101): print fizzbuzz(i)
みたいな感じのほうが実践的かなと。
初めはつい関数の最後で else を入れちゃうんだよね、いらないのに。