ルービックキューブと数学
ルービックキューブと数学の関係を少し議論してみます。まずは、最も単純なルー
ビックキューブ(1X1X6)から始めます。 この場合、可動部は存在しません。従っ
て、六面ある面の色の組み合わせがどうなるかを検討します。 色は赤・黄・白・緑・
紫・青の六色です。まず、六色から二色を選ぶやり方は、6C2です。 つまり、15通
りです。 そして、残りの四色から二色を選ぶやり方は、4C2です。これは6通りにな
ります。ゆえに、上下・左右・前後の面の組み合わせで色分けするやり方は、
(15通り)X(6通り)=90通り
になります。ここで、上下・左右・前後の区別をしなければ、上の数字を6で割って1
5通りです。 但し、上下と左右の面だけでは区別が付きませんが、これに前後の面
が付加されると、それらの面の配色状況で区別が付くようになります。よって、最終
的な組み合わせは30通りになります。例えば、
上−下 → 白−紫
前−後 → 緑−黄
左−右 → 青−赤
と
上−下 → 白−紫
前−後 → 黄−緑
左−右 → 青−赤
は区別できます。前後の面の色だけが逆になっている場合です。 ここで、正六面体
の対称性から言って、 上下・左右・前後の区別に意味はありません。 単に、便宜的
なものです(対向する面の色の組み合わせが重要)。
次に、ルービックキューブ(2X2X6)を考えます。 各面に4枚のパネルがあり、当
然、それらのパネルを回転させて動かすことができます。図1は動かす前のパネル
を四つの方向から3D描画させたものです。方向は、
方向1: θ=45度、φ=45度
方向2: θ=45度、φ=135度
方向3: θ=−135度、φ=45度
方向4: θ=−135度、φ=135度
です。
(図1、十進BASICによる3Dグラフィックス)
この場合の回転動作を行う外部副プログラム名は以下のようになります。
Z軸に関して
Z2CROTATION(二段目のパネルを時計方向に90度回転)
Z2AROTATION(二段目のパネルを反時計方向に90度回転)
Z1CROTATION(一段目のパネルを時計方向に90度回転)
Z1AROTATION(一段目のパネルを反時計方向に90度回転)
X軸に関して
X2CROTATION(二段目のパネルを時計方向に90度回転)
X2AROTATION(二段目のパネルを反時計方向に90度回転)
X1CROTATION(一段目のパネルを時計方向に90度回転)
X1AROTATION(一段目のパネルを反時計方向に90度回転)
Y軸に関して
Y2CROTATION(二段目のパネルを時計方向に90度回転)
Y2AROTATION(二段目のパネルを反時計方向に90度回転)
Y1CROTATION(一段目のパネルを時計方向に90度回転)
Y1AROTATION(一段目のパネルを反時計方向に90度回転)
これらの回転動作のコマンドを組み合わせることで、 パネルの状態がどうなるかを
考えましょう。コマンド名は外部副プログラム名の最初の三文字を取っています。
図2は、 Z2A→X2A→Y2A→Z1C→X1C→Y1Cという順番でコマンドを実行し
た後のパネルの状態です。
<図1からの回転動作>
(図2、十進BASICによる3Dグラフィックス)
勿論、上記のコマンド操作の手順を逆に辿れば図1の状態に戻ります。