- ベストアンサー
FizzBuzzの解釈について
http://d.hatena.ne.jp/keyword/FizzBuzz に厳密に解釈すると、15の場合には「FizzBuzzFizzBuzz」となる、とあります。 なぜ、繰り返しになるのかが分かりません。 どうしてでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
仕様(条件)を列挙します 3 で割り切れるならば数字の代わりに Fizz 5 で割り切れるなら Buzz 3 でも 5 でも割り切れる場合は、FizzBuzz です。 人間の頭で解釈すると、 3でも5でも割れるときを「公倍数」といいますよね。 ですから人間の頭の中の解釈は今までの経験上で培ってきた「感覚」や「常識」で判断されていまします つまり、 公倍数の時に、 3で割れる数 5で割れる数。 という二つの条件が重なった1つの条件である と判断し、3だけで割れる数。5だけで割れる数 の仲間に入らない と解釈してしまうんですね。 ここからは、数学でいう集合論になってしまうのでちょいと簡単に 条件1.3で割れる数 3,6,9,12,15,18・・・ 条件2.5で割れる数 5,10,15,20・・・ 条件3.公倍数 15,30・・・ です。 人間の頭で考えると、条件3に一致した場合、条件1と条件2には一致しない と考えてしまいます。 しかし厳密に解釈すると 条件3の時は 条件1にも条件2にも一致するんです。 単純なロジックを組んだ場合。 3で割り切れる数はFizz 5で割り切れる数はBuzz 3でも5でも割り切れる数はFizzBuzz というロジックになりますね。 しかし、15の時には。3で割り切れる数。5で割り切れる数。3でも5でも割り切れる数の全ての条件に一致してしまうために、 Fizz(3で割)Buzz(5で割)FizzBuzz(3でも5でも割) と出力されてしまう ということです。
その他の回答 (4)
- inu2
- ベストアンサー率33% (1229/3720)
No1です 質問内で示唆しているURLでは、このようなどうとでも取れる文章で仕様を書くな っていう題材として取り上げているにすぎない。 >ありがとうございます。 >理解はできますが、同意はいたしかねる内容ですね。 いや、べつに私がどう理解しているかを回答したわけじゃなくて、なぜ繰り返しになるのか を解説したまで。 私の回答に同意するしないの問題ではないです。 私だって個人的には、繰り返し出力する仕様はありえねぇな と考えますよ。
お礼
お気を悪くさせたようですみません。 てっきり、"FizzBuzzFizzBuzz"と連続するのはアリだと受け取りました。
- a-saitoh
- ベストアンサー率30% (524/1722)
それは,厳密な解釈ではなくて,ただの屁理屈です. 「1+1 = 田 」っていうのと同じ. なぜ繰り返しになるのか,わからないという質問者様の日本語感覚で正しいと思いますよ. 普通,場合分けの説明文, ・Aの場合はX ・Bの場合はY ・Cの場合はZ というような条件が示された場合,A,B,Cのうちのもっともよく合致する項目を一つ選ぶ,と解釈します. これを文字通り,プログラムが行うべき処理を時系列順に列挙していると解釈してしまうと,FizzBuzzFizzBuzzが出力されるという解釈になりますね. まー,こういう,揚げ足取りの余地のある仕様書を書く方が悪いという話もありますが...
お礼
ありがとうございます。 私も屁理屈なんだろうけど、何らかの意図があるのかな?と思います。 >まー,こういう,揚げ足取りの余地のある仕様書を書く方が悪いという話もありますが... まー、不明だったら仕様書書いた人に聞くのが一番ってことですよね。 作る方だってバグがありますからね。
- hirusagari
- ベストアンサー率64% (20/31)
きっと、このふたつのちがいでしょう。 通常版 http://codepad.org/v36BOdXe 厳密?版 http://codepad.org/iwFFJEQy ただし、これを「厳密」と呼ぶのかはわかりませんが……。
お礼
ありがとうございます。 このようなソースですよね。 なんか、バグがあっても、これは厳密に解釈すれば正しいんだ!!と主張しているように見えてしまいます。
- yaemon_2006
- ベストアンサー率22% (50/220)
解釈次第。 "3 でも 5 でも割り切れる場合は、FizzBuzz"を、 上二つの条件の論理積をあらためて説明したものと解釈すると 質問者の言うとおり。 そうではなく、 "3 でも 5 でも割り切れる場合は、FizzBuzz"もひとつの条件であり、 それがたまたま上二つの条件の論理積と一致しただけと考えると、 "ANo.1"の説明のとおり。
お礼
ありがとうございます。 理解はできますが、同意はいたしかねる内容ですね。 http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E7%A9%8D のような図で、与えられた命題を考えると、FizzBuzzとしか考えられません。