Quantcast
Channel: 円周率近似値の日に生まれて理系じゃないわけないだろ! - knifeのblog
Viewing all articles
Browse latest Browse all 5376

笑わない数学者のビリヤード問題

$
0
0

午後のひとときに算数・数学パズルを解いてみよう。

笑わない数学者

 

 



講談社ノベルス P.58
講談社文庫 P.74-75

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

小説内では、n=5について出題だけして、解答出さずに終わる。

n=5程度であれば、場合分けをしっかりやって手計算でも十分に求めることが出来るのを知っているが、nを増やしてみることを画策した。
 

1 : 1
2 : 1-2
3 : 1-2-4
4 : 1-2-6-4
4 : 1-3-2-7
5 : 1-3-10-2-5
6 : 1-2-5-4-6-13
6 : 1-2-7-4-12-5
6 : 1-3-2-7-8-10
6 : 1-3-6-2-5-14
6 : 1-7-3-2-4-14
7 : No solution
8 : 1-2-10-19-4-7-9-5
8 : 1-3-5-11-2-12-17-6
8 : 1-3-8-2-16-7-15-5
8 : 1-4-2-10-18-3-11-8
8 : 1-4-22-7-3-6-2-12
8 : 1-6-12-4-21-3-2-8
9 : 1-2-4-8-16-5-18-9-10
9 : 1-4-7-6-3-28-2-8-14
9 : 1-6-4-24-13-3-2-12-8
9 : 1-11-8-6-4-3-2-22-16
10 : 1-2-6-18-22-7-5-16-4-10
10 : 1-3-9-11-6-8-2-5-28-18
10 : 1-4-2-20-8-9-23-10-3-11
10 : 1-4-3-10-2-9-14-16-6-26
10 : 1-5-4-13-3-8-7-12-2-36
10 : 1-6-9-11-29-4-8-2-3-18
11 : No solution
12 : 1-2-9-8-14-4-43-7-6-10-5-24
12 : 1-2-12-31-25-4-9-10-7-11-16-5
12 : 1-2-14-4-37-7-8-27-5-6-13-9
12 : 1-2-14-12-32-19-6-5-4-18-13-7
12 : 1-3-8-9-5-19-23-16-13-2-28-6
12 : 1-3-12-34-21-2-8-9-5-6-7-25
12 : 1-3-23-24-6-22-10-11-18-2-5-8
12 : 1-4-7-3-16-2-6-17-20-9-13-35
12 : 1-4-16-3-15-10-12-14-17-33-2-6
12 : 1-4-19-20-27-3-6-25-7-8-2-11
12 : 1-4-20-3-40-10-9-2-15-16-6-7
12 : 1-5-12-21-29-11-3-16-4-22-2-7
12 : 1-7-13-12-3-11-5-18-4-2-48-9
12 : 1-8-10-5-7-21-4-2-11-3-26-35
12 : 1-14-3-2-4-7-21-8-25-10-12-26
12 : 1-14-10-20-7-6-3-2-17-4-8-41
12 : 1-15-5-3-25-2-7-4-6-12-14-39
12 : 1-22-14-20-5-13-8-3-4-2-10-31
13 : No solution
14 : 1-2-13-7-5-14-34-6-4-33-18-17-21-8
14 : 1-2-21-17-11-5-9-4-26-6-47-15-12-7
14 : 1-2-28-14-5-6-9-12-48-18-4-13-16-7
14 : 1-3-5-6-25-32-23-10-18-2-17-7-22-12
14 : 1-3-12-7-20-14-44-6-5-24-2-28-8-9
14 : 1-3-24-6-12-14-11-55-7-2-8-5-16-19
14 : 1-4-6-31-3-13-2-7-14-12-17-46-8-19
14 : 1-4-8-52-3-25-18-2-9-24-6-10-7-14
14 : 1-4-20-2-12-3-6-7-33-11-8-10-35-31
14 : 1-5-2-24-15-29-14-21-13-4-33-3-9-10
14 : 1-5-23-27-42-3-4-11-2-19-12-10-16-8
14 : 1-6-8-22-4-5-33-21-3-20-32-16-2-10
14 : 1-8-3-10-23-5-56-4-2-14-15-17-7-18
14 : 1-8-21-45-6-7-11-17-3-2-10-4-23-25
14 : 1-9-5-40-3-4-21-35-16-18-2-6-11-12
14 : 1-9-14-26-4-2-11-5-3-12-27-34-7-28
14 : 1-9-21-25-3-4-8-5-6-16-2-36-14-33
14 : 1-10-22-34-27-12-3-4-2-14-24-5-8-17
14 : 1-10-48-9-19-4-8-6-7-17-3-2-34-15
14 : 1-12-48-6-2-38-3-22-7-10-11-5-4-14
15 : No solution
16 : No solution
17 : 1-2-4-8-16-32-27-26-11-9-45-13-10-29-5-17-18
17 : 1-3-12-10-31-7-27-2-6-5-19-20-62-14-9-28-17
17 : 1-7-3-15-33-5-24-68-2-14-6-17-4-9-19-12-34
17 : 1-7-12-44-25-41-9-17-4-6-22-33-13-2-3-11-23
17 : 1-7-31-2-11-3-9-36-17-4-22-6-18-72-5-10-19
17 : 1-21-11-50-39-13-6-4-14-16-25-26-3-2-7-8-27
18 : 1-2-18-4-6-37-9-14-79-7-8-11-16-13-32-12-5-33
18 : 1-2-20-6-12-47-15-30-27-21-4-39-7-10-34-19-5-8
18 : 1-2-24-15-4-16-12-25-38-50-14-17-5-8-10-11-49-6
18 : 1-2-27-7-13-5-21-22-19-12-4-24-32-10-23-71-6-8
18 : 1-2-41-12-5-6-8-7-9-4-29-36-18-22-10-27-25-45
18 : 1-2-42-13-4-11-23-14-12-20-7-29-18-71-10-9-16-5
調査中…

 

n=5の解を見てみよう

5 : 1-3-10-2-5
1=1
2=2
3=3
4=1+3
5=5
6=5+1
7=2+5
8=2+5+1
9=5+1+3
10=10
11=2+5+1+3
12=10+2
13=3+10
14=1+3+10
15=3+10+2
16=1+3+10+2
17=10+2+5
18=10+2+5+1
19=5+1+3+10
20=3+10+2+5
21=1+3+10+2+5
のように、隣り合った数の和で、1から21まですべてを漏れなく網羅しています。

さて、どのようにしてこのような解を求めるのか。
方法はいくつかあるが、どちらにしてもすべての玉に書かれた数の総計を求める必要があることは確かだ。
n=5のときの総計は、
n2-n+1=25-5+1=21
と求まる。

なぜ、この式になるのかというと、
n=5を例にすると、
1個の玉で表せる値は5種類
2個の玉で表せる値は5種類
3個の玉で表せる値は5種類
4個の玉で表せる値は5種類
5個の玉で表せる値は1種類
ということで、
n2-n+1
という式になるということです。

ここで、1つの玉の最小値として1は必ず使わなければならないことは明白ですね。
2も1+1は使えないので、1と2はnに関わらず必須になります。
1と2が隣り合うならば3が不要になり、隣り合わないならば3が必須となる。
1と2が隣り合う場合、4が必須になり、
 1と4が隣り合う場合、6が必須になり、総計21より残りは8となるが、
  1-2-6-8-4
  1-2-8-6-4
  いずれも不適。
  よって、1と4は隣り合わない。
 1と4が隣り合わない場合、5が必須になり、総計21より残りは9となるが、
  1-2-4-5-9
  1-2-4-9-5
  1-2-5-4-9
  1-2-5-9-4
  いずれも不適。
 よって1と2は隣り合わない。
1と2が隣り合わない場合、3が必須になり、
 1と3が隣り合う場合、4は不要となり、総計21より、残りの2玉で15になり、
  1、2、3、5、10
  1、2、3、6、9
  1、2、3、7、8
 のいずれかの組み合わせとなる。
 1、2、3、5、10の場合、
  1-3-10-2-5が候補となる。
 1、2、3、6、9の場合、5を作るため1-3-2と並べるため、6が出来、不適。
 1、2、3、7、8の場合、9を作ろうとすると10が出来ず、不適。
よって、1-3-10-2-5の候補で1から21まで作れることを確認出来れば、解である。


さて、プログラミングではどんなことをやっていたのか。
かれこれ10年以上前に作ったプログラムを、新しいパソコン(とは言っても2011年モデル)、新しいコンパイラでコンパイルし直したに過ぎないが、コンパイラの性能で高速化出来ている。

今、n=18、n=19、n=20を別々に実行して、いずれも解答待ちで、n=18については解を見つけ出してきた。
10年以上前には、n=18をやっても、進み方が遅かったので、そこで諦めていたわけだ。
それが、解を見つけるところまで来ているというのが、ハードウェアの進歩、コンパイラの進歩ということなのだろう。

となると、次に改善すべきは、このハードウェアのスペックで出来る最善のアルゴリズムを考えることとなる。


ではでは


Viewing all articles
Browse latest Browse all 5376

Trending Articles