2009-08-18[n年前へ]
■ワイヤーロック錠をバラす
「鍵を使わずには絶対に開けられない鍵」というのは滅多にない。原理上は開かないはずのカギであっても、おおくの場合、製造上の問題や・運用上の問題が原因で、簡単に開く鍵になってしまうことも多い。たとえば、右上の写真に示したワイヤーロックなどは、その一例である。
たとえば、下の動画はケンジントンのワイヤーロックをばらしてみた例である。このワイヤーロックは右の写真のような形状をしているのだが、一番外側の多いが薄い金属であり、その金属をただラジオペンチやニッパーなどで「めくる」だけで、シリンダー錠の中身をすべて取り出すことができる。つまり、シリンダーを固定しているピンもバネもすべてがバラバラになってしまうのである。ひとことで言えば、簡単に開いてしまうのである。
このワイヤーロックの仕組みは、シリンダーの中に5セットのバネと2本のピンが入っている。そして、その5セットのうち2本ピンのうちの片方の長さが、セットごとに違うのである。だから、そのピンの長さに応じた押し込みをすることで、シリンダーの中の回転部を回すことができるようになる、というわけだ。
もっとも、パズル好きな人で、手先が器用な人なら、精密ドライバーや堅い適当な形状の板などがあれば、わざわざネジをばらさなくても解錠することができる。暇な時間があれば、高いパズルを買わずとも、100円ショップで鍵を買い「その鍵を開ける」というパズルを楽しむのも面白いかもしれない。
2010-11-13[n年前へ]
■とても面白い「トランプ・マジック」パズル(回答例付き)
少し前、こんなパズルに挑戦しました。そのパズルの内容は、およそこんな具合です。
観客の前にマジシャンと助手がいる。マジシャンが(ジョーカーを抜いた)トータル52枚のトランプを観客に渡し、観客はその中から5枚を選んで助手に渡す。助手はその5枚の中身を手に取って、その5枚から好きな1枚を選ぶ。そして、残りの4枚のカードを順番にマジシャンに見せる。
マジシャンと助手は一体どのようなルール(カードの向きを細工するとか、出し方に細工するとか、そういう類いの仕掛けは一切しないものとする)を決めておけば、マジシャンは「助手が選んだ一枚のカード」を必ず当てることができるだろうか。
この問題が面白いのは、答えが複雑なものでもなく、小難しい数学的知識が必要とされるものでもない・・・つまり、考えさえすれば、誰でも楽しむこと・解くことができる、というところです。
「答えとなるルール」は何通りもありますが、どの答えの場合でも、「あともう一歩(1bit)」をどんなルールで渡りきるか(その1bitをどう表現・限定するか)、という辺りがパズルとしてのクライマックスであるように思います。そして、たぶん、その山場は「こうすれば越えることができるだろう」とわかる(比較的最後の答えがカチリと上手くはまる)・・・けれど、結構悩むのが実に面白いパズルです。回答例のいくつかをここに書き留めておきますので(不十分な説明ですが、この問題に挑戦した後に読めば、容易に中身は理解することができると思います)、答えを思いついたら、似たような答えか・それとも全然違うアプローチをしたか、など確かめてみると面白いと思います。
・・・ところで、「答えとなるルール」は何通りもある、と書きましたが、本当のところ、そこにある「ルール 」はひとつだけであるのかもしれません。ただ、その「本来はひとつの姿のルール」を異なる表現の仕方をしているがために、何通りものルールがあるように見えるだけのような気もします。
このトランプ・マジック・パズル、どんな答え(群)が思いつくでしょうか?そして、それらの統一的に表現するとしたら・・・それは一体どんなものになるでしょうか。
2010-12-02[n年前へ]
■数学(コーディング)パズル、大好き!?
ここのところ、数学パズル||コーディング・パズルにハマっています。きっかけは、国際情報オリンピック(International Olympiad in Informatics)の予選問題にもなったことがあるという「入門レベルの問題」で、「200個以内の長方形の上左および右下座標(32bit floatで表現できるような実数)が与えられる。長方形は相互に重なりが許されるとき、与えられた長方形群により覆われた部分の面積を求めるコードを書け。今すぐ書け。あっ、実行時間が2秒を越えるようなコードはダメだかんね」というお題でした。
あなたなら、このお題に対して、どんなコードを書くでしょう?VisualBasicでも、Perlでも、C++でも、Lispでも・・・、自分の言葉で問題を書き綴り・解き明かす「数学(コーディング)パズル」はっても楽しくスリリングなことなのだろう、と思います。きっと、それは固くなりがちな頭を柔らかくし、何らかの瞬発力を与えてくれるものであるような気がします。
ちなみに、そのお題を与えられたとき、適当にRubyで書いたコードが下のものになります。あなたなら、どんなコードを書きますか?
def makeRect(n) data=[] n.times{ data<<[rand(),rand(),rand(),rand()] } return data end def makeMesh(rects) xg=[] yg=[] rects.each do |xt,xb,yt,yb| xg<<xt<<xb yg<<yt<<xb end xg.sort! yg.sort! mesh=[] (xg.length-1).times do |x| (yg.length-1).times do |y| cx=(xg[x]+xg[x+1])/2 cy=(yg[y]+yg[y+1])/2 area=(xg[x+1]-xg[x])*(yg[y+1]-yg[y]) mesh<<[cx,cy,area] if area>0 end end return mesh end rects=makeRect(200) mesh=makeMesh(rects) area=0 mesh.each do |x,y,a| rects.each do |xt,xb,yt,yb| if xt<x&&x<xb&&yt<y&&y<yb area+=a break end end end puts area
2010-12-23[n年前へ]
■「答え」にたどり着くための「羅針盤」や「地図」
ある人の影響で、今年の春頃から、数学パズルが好きになりました。単純に解くことができそうにも思える・・・けれど、実際に解こうとするとなかなか溶けない頭の体操をする楽しさを教えられ、「数学パズル」に挑戦する心地良さに魅入られています。
たとえば、それはこんな「バシェの分銅の問題」のようなパズルです。
太郎の「リュック」の重さは、「1〜40kgまでの整数で表される」ということがわかっている。天秤を使って太郎の「リュック」の重さを量るためには、最低何個の分銅があればよいか?
そして、その数学パズルを深追いして納得するための四苦八苦にずっとハマっています。その四苦八苦の楽しさも・・・また別の若い誰かに教えられたような気がします。 「どうやったら、解くことができるか」ということに悩み、そして「その解き方に、どうしたら必然的にたどり着くことができるのか」ということを腑に落ちたくて、「とても長い時間」をひとつひとつのパズルに使っているような気がします。
「答え」という名前の「登山道」のひとつより、その答えにたどり着くための「羅針盤」や「地図」の方がずっと魅力的です。たとえば、冒頭の「バシェの分銅の問題」で言えば、「(1,3,9,27kgの分銅)トータル4つ」という答よりも、その答えにたどり着くための「考え方」やその答えにたどり着いたあとに得られる「何か」の方が何百倍も(あぁ、なんて数学的でない表現なのでしょうか)魅力的に思えます。
2013-07-28[n年前へ]
■「(テキヤの)アタリのないクジ担当バイト」とか「花とゆめ」とか「誕生日」
最近の「いろいろ」
「当たりの入っていないくじ引きで逮捕」という記事。…大学時代にテキ屋バイトをした。そこも1等の高額ゲーム機が当たるアタリは存在しなかった。大体、その1等ゲーム機自体、箱の中身なんかなかった。…しかし、もっと恐ろしかったのが(続く)
1等じゃないにしても、高めの商品が当たったら、なんのかんの言って”アタリがなかったことにしてね”と、そのクジ担当のバイトには説明がされる…ということだった。テキヤバイトの中では、クジ担当は(アタリが出たら…と思うと)実につらかった。
あと、金魚(スーパーボール)すくいも、「小さい子が100円玉握りしめて来ると…」辛かった。水に浸った「すくい紙」が破れると…その濡れた紙の何倍のもの涙が、小っちゃな子の目に浮かぶんだもの…。
白泉社40周年記念WEBサイトの「40作全巻622冊プレゼント」が欲しい!高校に入った'80sから「花とゆめ」を買い、大学時代は研究室の棚を「花とゆめ」で埋め尽くした。…あれ、一体いつから「花とゆめ」を読まなくなってしまったのだろう?
誕生日の計算問題と言えば、先日飲みながら、こんな話題になった。「何人いれば、誕生日が3連チャンで繋がっている3人がいる確率が50%を超えるか?」これも、時間が空いた時にでも挑戦してみると面白い計算パズルかも。