アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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でも割)

と出力されてしまう ということです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

理解はできますが、同意はいたしかねる内容ですね。

http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86% …
のような図で、与えられた命題を考えると、FizzBuzzとしか考えられません。

お礼日時:2008/08/24 10:08

 


 解釈次第。
 
"3 でも 5 でも割り切れる場合は、FizzBuzz"を、
上二つの条件の論理積をあらためて説明したものと解釈すると
質問者の言うとおり。

そうではなく、
"3 でも 5 でも割り切れる場合は、FizzBuzz"もひとつの条件であり、
それがたまたま上二つの条件の論理積と一致しただけと考えると、
"ANo.1"の説明のとおり。
 
    • good
    • 0

きっと、このふたつのちがいでしょう。



通常版
http://codepad.org/v36BOdXe

厳密?版
http://codepad.org/iwFFJEQy

ただし、これを「厳密」と呼ぶのかはわかりませんが……。
    • good
    • 0
この回答へのお礼

ありがとうございます。
このようなソースですよね。

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

お礼日時:2008/08/25 13:59

それは,厳密な解釈ではなくて,ただの屁理屈です.


「1+1 = 田 」っていうのと同じ.

なぜ繰り返しになるのか,わからないという質問者様の日本語感覚で正しいと思いますよ.

普通,場合分けの説明文,
・Aの場合はX
・Bの場合はY
・Cの場合はZ
というような条件が示された場合,A,B,Cのうちのもっともよく合致する項目を一つ選ぶ,と解釈します.

これを文字通り,プログラムが行うべき処理を時系列順に列挙していると解釈してしまうと,FizzBuzzFizzBuzzが出力されるという解釈になりますね.

まー,こういう,揚げ足取りの余地のある仕様書を書く方が悪いという話もありますが...
    • good
    • 0
この回答へのお礼

ありがとうございます。
私も屁理屈なんだろうけど、何らかの意図があるのかな?と思います。

>まー,こういう,揚げ足取りの余地のある仕様書を書く方が悪いという話もありますが...
まー、不明だったら仕様書書いた人に聞くのが一番ってことですよね。
作る方だってバグがありますからね。

お礼日時:2008/08/25 14:01

No1です


質問内で示唆しているURLでは、このようなどうとでも取れる文章で仕様を書くな っていう題材として取り上げているにすぎない。


>ありがとうございます。
>理解はできますが、同意はいたしかねる内容ですね。
いや、べつに私がどう理解しているかを回答したわけじゃなくて、なぜ繰り返しになるのか を解説したまで。
私の回答に同意するしないの問題ではないです。

私だって個人的には、繰り返し出力する仕様はありえねぇな と考えますよ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/25 14:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!