ルーピック・キューブ (1)

    a b c
   ┏━┳━┳━┓
  i┃1┃2┃3┃
   ┣━╋━╋━┫
  j┃4┃5┃6┃
   ┣━╋━╋━┫
  k┃7┃8┃9┃
   ┗━┻━┻━┛

図は、一面3×3マスからなるキューブ(立方体)を正面から見たものです。
それぞれの行(i~k)および列(a~c)の他の面には、その行または列の数字が正面と同じ並びで続き、キューブの周りを循環(ループ)しています。
例えば、i行を右隣-裏面-左隣へと、また、b列を下面-裏面-上面へと順番にたどっていくと、それぞれ

 i:123123123
 b:258258258

と並んで正面に戻ってきます。従って裏面を正面から見ると、例えばb列は上から順に「852」と、正面とは逆の並びになることになります。

(Loopicルール)

  1. 一度に、いずれか一つの行または列のマスをスライドさせることができる。
  2. 行は右から左に、列は下から上に、1マスまたは2マス スライドさせる。
  3. ただし、動かすたびに循環が現在の正面の数字の並びにリセットされます。例えば、a列を2マス動かすことを「a2」と書くとすると、a2によって元の図は、下図のようになります。
   ┏━┳━┳━┓
   ┃7┃2┃3┃
   ┣━╋━╋━┫
   ┃1┃5┃6┃
   ┣━╋━╋━┫
   ┃4┃8┃9┃
   ┗━┻━┻━┛

このとき、右隣の面は本来このa2により影響を受けないので、例えばi行の右隣の面は「123」のままのはずですが、この時点で循環がリセットされて、i行の他の面もすべて「723」の並びの循環に書き換えられます。

(例題)

上記(Loopicルール)による操作で、下図の左から右のようになりました。
右図から元の左図に戻すための手数が最小になるような操作を考えてください。
解答は、ルール3)の例にならって操作の順に「i1b2c1」のように書きます。
行あるいは列の操作が連続する部分はアルファベット順に書くものとします。
(「i1c1b2」でも結果そのものは全く同じですが、cよりbを先に書きます)

    a b c
   ┏━┳━┳━┓   ┏━┳━┳━┓
  i┃1┃2┃3┃   ┃3┃5┃2┃
   ┣━╋━╋━┫   ┣━╋━╋━┫
  j┃4┃5┃6┃ → ┃4┃8┃6┃
   ┣━╋━╋━┫   ┣━╋━╋━┫
  k┃7┃8┃9┃   ┃1┃9┃7┃
   ┗━┻━┻━┛   ┗━┻━┻━┛

(答え) k2b2i1 (3手)

123に注目すると、1と3が同列にあるので、このままでは横の並びがうまく取れません。従ってk行の1をb列にずらします。すなわち、k2。
(789についても同様に考えると、こちらは、仮に8をa列にずらしても13同列は解消されないままどころか、56までも同列になってしまいます。一方、k2では89同列も同時に解消されます。なのでこちらを採択します)

   ┏━┳━┳━┓   ┏━┳━┳━┓
   ┃3┃5┃2┃   ┃3┃5┃2┃
   ┣━╋━╋━┫ k2 ┣━╋━╋━┫
   ┃4┃8┃6┃ → ┃4┃8┃6┃
   ┣━╋━╋━┫   ┣━╋━╋━┫
   ┃1┃9┃7┃   ┃7┃1┃9┃
   ┗━┻━┻━┛   ┗━┻━┻━┛

1をi行に戻します。すなわち、b2。

     ┏━┳━┳━┓
     ┃3┃1┃2┃
   b2 ┣━╋━╋━┫
   → ┃4┃5┃6┃
     ┣━╋━╋━┫
     ┃7┃8┃9┃
     ┗━┻━┻━┛

最後に i1でi行の並びをそろえて完成! ^-^b
(ちなみに、問題の左図から右図へのもとの操作は、i2b1k1 でした)
以下、本題へ。

[問題(1)]

右図から左図に戻すための最小手を考えてください。

    a b c
   ┏━┳━┳━┓   ┏━┳━┳━┓
  i┃1┃2┃3┃   ┃9┃5┃1┃
   ┣━╋━╋━┫   ┣━╋━╋━┫
  j┃4┃5┃6┃ → ┃2┃7┃6┃
   ┣━╋━╋━┫   ┣━╋━╋━┫
  k┃7┃8┃9┃   ┃4┃3┃8┃
   ┗━┻━┻━┛   ┗━┻━┻━┛

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください