セント・アイヴズへ行く道すがら

結城浩

2004年2月16日

セント・アイヴズへ行く道すがら(問題編)

「私は、すぐ行かなくてはなりませんわ。次の問題を出しておきますね」

「え?」

「コンピュータをやっている方でしたら、 ビット数がちょっと増えただけで、とても大きな数が表現できることはご存知ですね。 8ビットで256通り, 10ビットで1024通り, 16ビットで65536通り, 32ビットになったら…」

彼女が言葉を切ったので、私はあわてて「42億だったかな」と答える。

「そう、42億9496万7296通りのものを表現できます。 2のn乗は、プログラマにとってはfamiliarな「切りの良い」数ですね。 ここからが問題です」

彼女は突然、英語で歌を歌いだした。美しいソプラノだ。

As I was going to St. Ives
    (セント・アイヴズへ行く道すがら)
I met a man with seven wives,
    (7人の奥さんを連れた男に会った)
Each wife had seven sacks,
    (奥さんはそれぞれ7つの袋を持ち)
Each sack had seven cats,
    (袋にはそれぞれ7匹の猫がいて)
Each cat had seven kits:
    (猫にはそれぞれ7匹の子猫がいた)
Kits, cats, sacks, and wives,
    (子猫と猫と袋と奥さん)
How many were there going to St. Ives?
    (セント・アイヴズへ行ったのは全部でどれだけ?)

歌い終わると彼女は私の答えを待たず、 すぐに姿を消してしまった。

私はそれほど暗算に強いわけではないけれど、 このぐらいなら何とか計算できる。

きっと、あなたも。

セント・アイヴズへ行く道すがら (解答編)

先日の女の子からのクイズ(これは有名な英語の歌ですね)の解答を書いておきますね。

解答は以下です:(マウスまたは CTRL+A で範囲選択などして色を変えてご覧ください)

7人の奥さんがいて、奥さんは7つの袋を持ち、袋には7匹の猫がいて、猫には7匹の子猫がいるので、 全部で7×7×7×7=2401となります。 ずいぶんたくさんになるものですねえ。

ちょっと待った。2401というのは子猫の数ですねえ。 子猫と猫と袋と奥さんを全部あわせると、 7×7×7×7 + 7×7×7 + 7×7 + 7 = 2401 + 343 + 49 + 7 = 2800 となります。

でも、実は、このような計算をする必要はありません。

歌をよく読みますと、 子猫と猫と袋と奥さんはセント・アイヴズへ向かっているとは書かれていない。 セント・アイヴズへ向かっているのは私一人であることがわかりますね(!)。

ただ、この問題には若干あいまいな点があります。 さらによく歌を読みますと、 「子猫と猫と袋と奥さん」 と限定して尋ねているようにも解釈することができます。 この場合には、セント・アイヴズへ行ったのはゼロということになります。

昨日から今日にかけて、解答を送ってくださった方は12人いらっしゃいました。 ちなみに、その中で一人またはゼロと答えた正解者は7人でした。 多数の解答をありがとうございます。