2013年1月25日金曜日

Rubicキューブのシミュレータ

Rubicキューブのどの面をどう回せといわれても, 手でやっていれば, 手順が複雑になってくるとつい間違えてしまうのは誰にも経験があろう.

その点, シミュレータはプログラムをしっかり書けば何回でも正しく処理できる.

Winning WaysにはElena Conwayが好んだパターンを作る手順が書いてある. どんなパターンか興味があったが, シミュレータを使えばそのパターンを作るのは簡単であった.

Aは4 Windows. Bは6 Windows. CはChequers. DはHarlequin. EはStripey. FはZigzag. Gは4 Crosses. Hは6 Crossesというらしい.

手順は省略する. Winning Ways, Vol. 4, p. 876参照.

2013年1月22日火曜日

Rubicキューブのシミュレータ

情報処理学会誌にRubicキューブの話を書いたのは2005年7月号であった. その話題は島内先生の名著(島内剛一:ルービック・キューブ免許皆伝, 日本評論社(1981))の置換をHaskellで記述することであった. (この本はルービック・キューブと数学パズル, 日本評論社(2008)として再刊された.)

最近Winning Waysを見ていたら, Rubik's Hungarian Cubeなる話題があり, いろいろ書いてあるが結構ややこしい. 我が家にもRubicキューブはあったが, 最近は見当たらないので, 私のことだからPostScript(とProcessing)でシミュレータを書いた.

それを使ってWinnig Waysの方法を試みているのだが, なかなかうまくはいかない.

今回はとりあえずシミュレータの話だ.

学会誌にあった絵だが, 下の図でAは魔方体を横からみた図で, この方向を南(S)とする. 上はトップ(T)とする. 右にわずかにみえる面は東(E)である. 当然みえない右の方に西(W), 向こう側に北(N), 下にボトム(B)の面がある.

BはTの面を回転しているところで, 時計廻りをt(あるいはt+), 反時計廻りをt-という. CはSの面の回転で, s(s+)とs-になる. DはE面の回転e(e+)とe-である. (どの図もちょうど45度回ったところで, 回転方向は分からない.)

今回のシミュレータはカラーで, 上の図では見えなかった3面が右につなげて描いてある.

Bの図では左半分の上段の色が右回転した(t)後であることを示している. C, Dはsとeの結果である.

この下の図も(図の記号は違うが)学会誌の図で, 島内本にある基本操作
E) 単純3角形 9a
F) 隣辺向き替え24a
G) 巡回 28a
H) ねじり 33a
を示す. そのシミュレータ版が次だ. 54の面には次のように0から53の番号が振ってあり, リストに各面の色が入っている. 回転によりその色を入れ替えている. 例えば回転tについては
((0 2 8 6) (1 5 7 3) (15 24 33 42) (12 21 30 39) (9 18 27 36))
のような置換のリストがある. つまり面0は2へ行き, 2は8へ行き, 8は6へ行き, 6は0へ行くを示す. t-はこのリストを逆に読む. まだ前途遼遠だが, 出来たところまでをまずアップロードしよう.