R、統計学、機械学習と競馬予想

学んだことを面白くメモするブログ

長方形に円を並べるという高校生の問題が難しかった

以下のツイートを見たことからはじまった。高校生の問題のはずなのに中々解けないというか、どのように手をつけて良いかわからず少しの間はまってしまった。 わからなかったので、勉強会で知り合いに聞いたりして、最後にはほぼ答えを教えてもらってなんとかとけました。よかった。。

問題

一辺の長さがそれぞれ4,2000である長方形に敷き詰めることができる単位円(半径が1の円)の個数は2011個以上であることを証明せよ。ただし、敷き詰める円は互いに重なり合わないものとする。必要があれば1.9819<\sqrt{4\sqrt{3}-3}<1.982を用いても良い。

試行錯誤

という問題で、普通に格子状に綺麗にならべたら2000個は並べることができるってのはすぐわかるんだけど、これよりももっと隙間なく並べることができるかっている試行錯誤がはじまるわけ。
f:id:hideisu:20170605230505p:plain

3つずつ並べてみたり

3つの正三角形を組みにしてならべてはどうかと思うけど、2000個のやつよりもならばないし
f:id:hideisu:20170605231751p:plain

対角線に一列に並べてみたり

もしかしたら対角線にならべて、その上と下にうまいことならべたら綺麗にならぶのかとおもったんだけど、1200個くらいしか並びません。
そんなわけで、最終手段として、少しずつ上下にずらしながら、ジグザグに並べたらどうなのかと思い浮かびます。

回答

f:id:hideisu:20170605232207p:plain
こんな風にならべると、例えば下の行を見ると5の円を少しだけ上に並べることができるので、上の2000個の並べ方よりも少しだけ詰めて並べることができます。これはすごい。
直線に並べるよりも、どれだけ詰めてならべることができるか(=2-αとおく)は、上の図の5の球を少し上におくことでどれだけ詰めることができるかに帰着できるから

3と5の円の中心の位置を計算するために3と5を抜き出してして図にすると以下のように書くことができ
f:id:hideisu:20170608024956p:plain
αを三平方の定理を使って求めると\sqrt{4\sqrt{3}-3}となります。

三平方の定理を使った計算はこんな感じ。
22 = α2 + (2-\sqrt{3})2]
α2 = 4 - (4 - 4\sqrt{3} + 3)
α2 = 4\sqrt{3} - 3
α = \sqrt{4\sqrt{3}-3}

これで、問題文で与えられていた「必要があれば1.9819<\sqrt{4\sqrt{3}-3}<1.982を用いても良い。」という条件と結びつくんですね。
一直線に並べると、円ある円の中心から隣の円の中心までの距離は2となりますが、5番の円を少しだけ上におくことで、隣の円とのx軸方向の距離は約1.982となり0.018くらいつめて置けるわけです。

このパターンで何個並べることができるか計算すると、2011個となります。 並べた画像は以下。
f:id:hideisu:20170605232207p:plain
f:id:hideisu:20170608130349p:plain

回答としては、以上となります。
ここからは、これまでの画像を作るコードとtwitterでのつぶやきのコピー

pythonのコード

円を描くコード

f:id:hideisu:20170608213210p:plain

0から60を描くコード

f:id:hideisu:20170608213439p:plain

1999から2011までを描くコード

f:id:hideisu:20170608130349p:plain

twitter

f:id:hideisu:20170608220300j:plain

え、まだこの問題の続きがあるの。。。2012以下である証明か面白そう。