Fizz Buzz (Library 2.0) - 3と5の倍数でアホに?
難問続きだったIncineratorを終わらせて、Library2.0にやってきた。なんだかサクサク進めそうな予感。
どんな問題?
Fizz Buzz
http://www.checkio.org/mission/fizz-buzz/
数字が3と5で割り切れるなら"Fizz Buzz"、
3で割り切れるなら"Fizz"、
5で割り切れるなら"Buzz"、
それ以外なら、その数字を文字列として返せ。
世界のナベアツみたいな問題かと思ったら、もっとシンプルに倍数だけを考えればよい問題。
どうやって解く?
まあ、ひねらず、そのまま書いてみる。
def checkio(number): if number % 3 == 0 and number % 5 == 0: return 'Fizz Buzz' elif number % 3 == 0: return 'Fizz' elif number % 5 == 0: return 'Buzz' else: return str(number)
さくっとクリア。
ちなみに、3の倍数と3の付く数字だけ"Aho"を返すなら、こんな感じかな。
def checkio(number): if number % 3 == 0 or '3' in str(number): return 'Aho' else: return str(number)
他の人の答え
辞書を使って switch-case 文を代替。
fizz_buzz = bool(number % 3), bool(number % 5) return {(False, False): "Fizz Buzz", (False, True): "Fizz", (True, False): "Buzz", (True, True): str(number)}[fizz_buzz]
http://www.checkio.org/mission/fizz-buzz/publications/bryukh/python-3/switch-case/
やっぱり、ちょっと物足りない。