• ベストアンサー

FizzBuzzの解釈について

http://d.hatena.ne.jp/keyword/FizzBuzz に厳密に解釈すると、15の場合には「FizzBuzzFizzBuzz」となる、とあります。 なぜ、繰り返しになるのかが分かりません。 どうしてでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

仕様(条件)を列挙します 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でも割) と出力されてしまう ということです。

whatsnew
質問者

お礼

ありがとうございます。 理解はできますが、同意はいたしかねる内容ですね。 http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E7%A9%8D のような図で、与えられた命題を考えると、FizzBuzzとしか考えられません。

その他の回答 (4)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.5

No1です 質問内で示唆しているURLでは、このようなどうとでも取れる文章で仕様を書くな っていう題材として取り上げているにすぎない。 >ありがとうございます。 >理解はできますが、同意はいたしかねる内容ですね。 いや、べつに私がどう理解しているかを回答したわけじゃなくて、なぜ繰り返しになるのか を解説したまで。 私の回答に同意するしないの問題ではないです。 私だって個人的には、繰り返し出力する仕様はありえねぇな と考えますよ。

whatsnew
質問者

お礼

お気を悪くさせたようですみません。 てっきり、"FizzBuzzFizzBuzz"と連続するのはアリだと受け取りました。

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.4

それは,厳密な解釈ではなくて,ただの屁理屈です. 「1+1 = 田 」っていうのと同じ. なぜ繰り返しになるのか,わからないという質問者様の日本語感覚で正しいと思いますよ. 普通,場合分けの説明文, ・Aの場合はX ・Bの場合はY ・Cの場合はZ というような条件が示された場合,A,B,Cのうちのもっともよく合致する項目を一つ選ぶ,と解釈します. これを文字通り,プログラムが行うべき処理を時系列順に列挙していると解釈してしまうと,FizzBuzzFizzBuzzが出力されるという解釈になりますね. まー,こういう,揚げ足取りの余地のある仕様書を書く方が悪いという話もありますが...

whatsnew
質問者

お礼

ありがとうございます。 私も屁理屈なんだろうけど、何らかの意図があるのかな?と思います。 >まー,こういう,揚げ足取りの余地のある仕様書を書く方が悪いという話もありますが... まー、不明だったら仕様書書いた人に聞くのが一番ってことですよね。 作る方だってバグがありますからね。

回答No.3

きっと、このふたつのちがいでしょう。 通常版 http://codepad.org/v36BOdXe 厳密?版 http://codepad.org/iwFFJEQy ただし、これを「厳密」と呼ぶのかはわかりませんが……。

whatsnew
質問者

お礼

ありがとうございます。 このようなソースですよね。 なんか、バグがあっても、これは厳密に解釈すれば正しいんだ!!と主張しているように見えてしまいます。

回答No.2

   解釈次第。   "3 でも 5 でも割り切れる場合は、FizzBuzz"を、 上二つの条件の論理積をあらためて説明したものと解釈すると 質問者の言うとおり。 そうではなく、 "3 でも 5 でも割り切れる場合は、FizzBuzz"もひとつの条件であり、 それがたまたま上二つの条件の論理積と一致しただけと考えると、 "ANo.1"の説明のとおり。  

関連するQ&A

専門家に質問してみよう