ogijunこの広告は、90日以上更新していないブログに表示しています。2007-05-09FizzBuzzの仕様Miscしばらく前に盛り上がってた(私はid:sumimさんとこ経由で見た)FizzBuzz問題がまた盛り上がってる。HORRORの記事を翻訳してくれたからなのだが。各地の反応がそれぞれ面白すぎるのと、ゴルフコンペがたくさん開催されてるのが素晴らしいんだけど、そのへんはカレーにスルーしてこれを取り上げまーす。1から100までの数をプリントするプログラムを書け。3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。したプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。したプログラマであれば、この要求が曖昧であることを指摘するだろう。「3と5両方の倍数」は「3の倍数」でもある。したら、3の倍数のときには「FizzとFizzBuzzの両方」を出すべきか?それともFizzを出すのは「3の倍数であって5の倍数でないとき」なのか?あああ、実に結城さんらしい(というかid:textfileさんらしい)指摘だなああ。プログラマたるもの、常に仕様が曖昧な箇所に気を配らなくてはならない。前に自分でやったときには気になんなかったな。"FizzBuzz".この書き方だと、3の倍数のときに"Fizz"と"FizzBuzz"の両方を出す、という解釈をするのは難しいということがわかる。3の倍数のときと5の倍数のときの挙動を記述して、次の文はその条件の下で3と5の両方の倍数だったときはこうなるというのを解説してる、と解釈するのがまあ自然かと。翻訳では、3と5と両方と、って3つの条件が並列してる感じになっちゃったのがよくなかったんだね。原文の方も全く曖昧じゃないというわけじゃない。なんで"BuzzFizz"じゃなくて"FBiuzzzz"とかでもなくて"FizzBuzz"にしなきゃいけないのかとか5の倍数のときは数字はどうするのかとか。それをこれ以上詳しく書こうとしていろいろ厳密にしていくと、プログラムになってしまう^^;。インタヴューには向かないんじゃないかと。アーカイブはてなブログをはじめよう!ogijunさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。