NetaTaneMenu >>>> ビリヤードのパズル
----
* ビリヤードのパズル
----
森博嗣のミステリ「笑わない数学者」にはいくつか興味深いパズルが載っています。
そのうちの1つで本の中には答えが載っていないパズルがあります。引用してみましょう。
(このような場合は「著作権」についてどう考えればよいでしょうか。)

 さて、では、もう一つ問題をだそう。
 五つのビリヤードの玉を真珠のネックレスのように、リングに繋げてみるとしよう。
 玉には、それぞれナンバが書かれている。
 さて、この五つの玉のうち、いくつとっても良いが、隣どうし連続したものしか取れないとしよう。
 一つでも、二つでも、五つでも全部でも良い。
 しかし、離れているものはとれない。
 この条件で取った玉のナンバを足し合わせて、1から21までのすべての数ができるようにしたい。
 さあ、どのナンバの玉を、どのように並べてネックレスを作れば良いかな?

です。確か数学者である天王寺博士が声だけで出題します。
このミステリの登場人物たちは,頭の中だけで考えます。

始めて見る方は、できれば本を買って実際に読んで考えてください。
(パズルだけを見ればそんな必要はさらさらないのですけども,一応ね。)
----
でこのパズルですが、初めて読んだ時にサクサクと解きました。読み進みながら。
面白いので,次の日に生徒に紹介しました。何人かは早速解いて持ってきました。
まあ,それぐらい解けるのです。

でも, ずっと気になったいました。
気になっていたのは,玉の数を増やしても問題は成立するのか?です。
さて,どうでしょう。また,その場合の答えは?

まずは減らしてみてから考えてみてください。
----
COLOR(#006789){白状しちゃうと,元の5つの問題の解がさっぱり分かりません。次の考えのどこが間違っているのか,教えてください。}

 異なる数が書かれた5つの玉でできた環で,連続して玉をとるやり方は,
 次のように21通りある。

    1個だけとる − 5通り
    2個連続してとる − 5通り
    3,4個のときも同様に5通り
    5個連続してとる − 1通り

 したがって,1から21までの合計数に対して,上の組合せが1対1で対応する。
COLOR(#fe891c){そうそう。そこに最初に考えが至るとは素晴らしい。}
 5つの玉の数のうち等しいものがあれば,上記の組み合わせは21通りに
COLOR(#fe891c){ビリヤードの玉は一組で考えます。いろんなゲームがあるみたいですが,この場合は1から15までのナンバの付いてる玉です。もちろん1つの数字は1つだけ。たぶんこれを言うのが面倒くさいので,ビリヤードの玉にしたのでは?}
 ならないからその可能性は除外できる。

 5つの数字の合計は21でなければならない。
 ゼロも負の数もない。
 1, 2は必ず必要だ。
 4も必要だ。1,2からは同じ数を2度使わずには4を作れないから。
COLOR(#fe891c){1と3があれば?}
 残り2個の数の和は 14 である。
 片方が4より大きくて,合計して14になり,かつ互いに等しくない2個の
 数の組み合わせは,5,9 または 6,8 だが,6は 2+4 でできるし,5 は
 1+4 でできるから除外される。
 よって解はない!

COLOR(#006789){えーん,助けて!}

COLOR(#fe891c){というわけで早々に助けました。もう大丈夫?ですよね。}

COLOR(#fe891c){いや待てよ,もしかして「真珠のネックレスのように、リングに」ってとこを読み飛ばしていませんか?「隣どうし連続したものしか取れない」もかな?どの玉を使うかと同時にどう配置するかが問題なんです。}
----
COLOR(#fe891c){さて,このパズルはとてもよく出来ています。解は一通り(ま、表裏は区別しないとして)。これが,玉の数を増やす/減らすと解が複数あったり無かったりします。どうなっているいのでしょう?なぜ5の場合は上手くいくのだろう。そのあたりが疑問だったりします。}

COLOR(#fe891c){もう少ししたらば,rubyのプログラムをアップしましょう。}

COLOR(lightblue){僕も森博嗣さんのミステリーが好きでこの問題が載ってるのも読んだことがあります。}

COLOR(lightblue){そのときは,トリックはすぐ分かり,このパズルの方が時間がかかりました。}

COLOR(lightblue){ただ,上にあるように,取り方が21通りで1対1に対応することと,1から10までできればあとは対称性で11から21まではできることが分かれば,それほど難しくなかったと思います。}

COLOR(lightblue){そのあとは,数学マニアのお決まりのコースで玉が6個,7個,・・・・・・,n個のときを考えました。}

COLOR(lightblue){でも,分かりませんでした(T_T)}

COLOR(#fe891c){rubyのプログラムだと,6個なら複数の解があり,7個だと一対一対応になる美しいものは見つかりませんという結果です。9個や10個だとWindowsが固まってしまいます。うーん。もうすぐ公開しましょう。もっと効率の良い刈り方やアルゴリズムが良いなあ。8個ではどうなのか?あるいは今度は次元を上げて配列しないと駄目なのか。いやはや。}

[[整数の分割のアルゴリズム]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS