ルービックキューブに関しての簡単な問題1個をプログラムで解いてみようと思っている。今回はそれの準備、問題の内容は次回以降に提示予定。タイトルに書いてある〝ルキュ〟はルービックキューブの略。
 とりあえず、1層を回すシクミを考える。
 ここで、アイデアをひとつ。「立方体9個が回る」とするのではなくて「正方形が21枚が回る」としてみること。
 利点:立方体として扱うと位置の他に方向の情報が必要になるが、単色・絵なしの正方形ならば、その必要がない。
 「単純化されるのでいいじゃん」と思っている。立方体の向きをどうやって表すかという問題から解放される。実際に作っていく過程や全体的に出来たときに吟味。
 デバッグ用にはこんな感じに描いてみたい。従来は3×3とその横の面3×4個の部分的な展開図。
■■■■■
■□□□■
■□□□■
■□□□■
■■■■■
 アイデアをもうひとつ。その表示通り、5×5の配列を使う。
 仮に正方形1個をSint32(32ビット符号付整数)で表すと、90度回転の関数はこんな感じ。XとYを取り替えて、片方の符号が反転する。
   試してみる。   disp(s);
{
  Sint32 s[5][5];
  Sint32 d[5][5];
  Sint32 num=0; 
  for(Sint32 y=0;y<5;y++){
  for(Sint32 x=0;x<5;x++){
     s[x][y]=num;
     num++;
  }
  }
  rot90(d,s);
  disp(d);
}
これでこの件は完了。