2013年5月26日日曜日

サイコロの問題

数式処理Vol.19,No.2を眺めていたら, 算数オリンピックの話題があった. Mathematicaで解くという話だが, ちょっとやってみた.

2004年のジュニア算数オリンピックの問題だそうだ.

「すべて同じサイコロを図のように積み上げました. このサイコロのA, B, Cの面と反対側の面のサイコロのアルファベットをそれぞれ求めなさい.」



一番上のサイコロから, A,B,Cの面で作る頂点の方向から下の図のpのように見える;
また中段の右のサイコロから, D,E,Fの面で作る頂点の方向からはqのように見える;
さらに中段左から面C,Dは隣接する;
下のサイコロから面A,Eは隣接することが分る.



サイコロはどれかの面が上にあるとしてよいから, pのように面Aが上だとすると, B,Cが側面になり, D,E,Fの2つが側面に, 残ったのが底になるわけだ.

Fが底だとすると, qをFが底になるように回転してpにつけるとrのようになる. Eが底だとするとsになり, Dが底だとするとtになる.

これらの図で隣接関係を満すものを探すと, rではA, Eは隣接するがC,Dは裏の関係だからだめ. sではC,Dは隣接だがA,Eは裏でだめ. tはA,EもC,Dも隣接していてよさそうである.

というわけでAの裏はD, Bの裏はF, Cの裏はEであった.

おそらくMathematicaで解く方が面倒くさい.



サイコロの上のような展開図よりも, Rubicキューブで使ったこういう図の方が隣接関係はよく分るように思う.

ところで右の展開図は一筆描きができ, PostScriptで描くのも楽だった.

0 件のコメント: