Flying Cube

ルービックキューブに関するブログです

PLL 二面判断用のWebアプリを作ってみた

作ったのはもう一年くらい前のことなんですが、

f:id:yuimat:20181226005837p:plain
こんな感じで81問ランダムに生成します。

カーソルを合わせると答えが出ます。 Herokuの無料プランで動かしているので、アクセスがしばらくないとサーバー起動までに時間がかかるのが難点ですが…。まとめて訓練したいときにはいいかも?

https://cubealgs.herokuapp.com/

PLL判断は、他にも

などが役に立つと思います。

CFOP法の解釈:OLL編 その1 Edge OLL

前回は F2L の解法について理解しました。 今回は、次のサブステップである OLL について、理屈を掘り下げていきましょう。

OLLではU面の色を一色にそろえることを目指します。このステップでは上の面の色だけに注目します。側面の色はまだそろえません。

初心者向けの OLL は2つのステップに分けて行われます。

  1. Edge OLL: U面のエッジの色を揃える(十字を作る)
  2. Corner OLL: U面のコーナーの色を揃える(完全にU面を一色にする)

f:id:yuimat:20170727230008p:plain → Edge OLL → f:id:yuimat:20170727230129p:plain → Corner OLL → f:id:yuimat:20170727230051p:plain

このように、エッジをそろえてからコーナーをそろえる、というステップを踏むことで、動かせない領域が増えるのを極力遅らせながら進めることができます。

今回の記事では1つ目のサブステップである Edge OLL の理屈を掘り下げていきます。 まずはいつものように説明のための用語を定義したいと思います。

  • ターゲット色=U面色:最終的にU面にそろえたい色=U面のセンターピースの色。
  • LLピース:U面色を持つピース
    • LLエッジ:U面色を持つエッジピース
    • LLコーナー:U面色を持つコーナーピース
  • 色の向きがかわる:U面にあるLLエッジやLLコーナーに特定の操作を加えた結果、そのピースが再びU面に戻ってきたとき、操作前の状態と比べてU面にある色が入れ替わっていること
    • LLエッジの場合の実例
    • LLコーナーの場合の実例
  • 向きがそろう:LLエッジやLLコーナーがU面にあるとき、そのピースのU面色がU面を向くこと

Edge OLL

このステップでは、最終的にU面にターゲット色の十字の模様を作れば完成です。コーナーの色はまだ気にしません。 U面に十字を作るというのは、言い換えれば、LLエッジのうちターゲット色が側面を向いているものを見つけて、 そのピースのターゲット色を上に向けさせればよいということになります。 上で定義した用語で言えば「U面に十字を作る」=「全てのLLエッジの向きがそろう」ということになります。

では、実例を見ていきましょう。下図の例では、F面とR面にあるLLエッジのターゲット色(黄色)が側面を向いています。

f:id:yuimat:20170727230008p:plain

これらの2つのピースのターゲット色の向きを変えることができれば十字が完成するというわけです。

それでは、どのようにすれば下の2層をぐちゃぐちゃに崩すことなくLLエッジの向きを変えることができるでしょうか。 今、下の2層は完全にピースが正しくそろっていますから、U面以外の回転を加えると必ずそのどこかが崩れてしまいます。 一方で、U面をだけをいくら回し続けてもLLエッジの色の向きは変わらないことは明白です。

したがって、LLエッジの向きを変えるためには、少なくとも下の2層のピースを一時的に崩さなければならないことは分かります。 しかし、せっかく頑張ってそろえたピースですから、やむを得ず一時的に崩したとしても、LLエッジの向きを変えるという目的を果たした後は元のそろった状態に戻したいところです。また、崩すとしても、できるだけ最小の崩し方で目的を実現したいところです。

では、どのような手順を踏めばそのような事ができるのか。 順を追って考えていきます。

LLエッジの色の向き

さて、上の節では、U面に乗っているLLエッジの色の向きはU面の回転に対して不変であることに言及しました。 では、どのような操作ならばLLエッジの色の向きを変えることができるのでしょうか。

ここではまず、今後の話をわかりやすくするために「ピースの色の向きが変わる」という言葉の定義を厳密に説明したいと思います。 今、下の2層は既にそろっている状態を考えます(下図)。U面のセンターピースの色を黄色とすると、 そろえなければいけない残りのピースは必ずこの黄色の面を持っています。 これらの黄色の面を持ったピースをLLピースと呼びます。

キューブの色が完璧にそろった状態では、LLピースは下図のように、必ずU面にあり、かつ黄色の面が上側(U面)に来ていなければいけません。

f:id:yuimat:20170727230051p:plain

途中の過程でこれらのピースがU面以外にあるときには、黄色がどのような向きを取っていても構いません。しかし、最終的にこれらのピースがU面にやってきたときには黄色が上を向いている必要があります。LLピースにとって重要なことは、「ピースがU面に来たときに黄色が上を向いていること」です。

この事実から、「LLピースの向き」というのを「そのピースがU面にあるとき、上側(U面)にある色の違い」で定義すると考えやすくなります。 逆に、U面以外にあるときのLLピースの向きはここでは全く考える必要性がないので、特に定義しないことにします。あくまで、「U面にあるときの上側の色」で向きを考えればよいのです。

さて、色の向きの定義が終わったところで、このように定義したピースの向きが変わるのはどういうときかを考えていきます。

LLエッジの向きが変わるための要件

LLエッジの色の向きを変えるための原理を理解するために、各面の回転が LLエッジに与える影響について考察してみましょう。 まず、どこか1面だけを回転させる場合を考えてみます。

1面のみを回転させる場合については、次のことが言えます。

  1. U面、D面の回転はLLエッジの向きに影響を与えない。
  2. 側面(R面、F面、L面、B面)の回転は、LLエッジのうち1つをU面から移動させるが、OLLを完成させるためには、このピースは最終的にU面に戻ってこなければならない。 1つの面の回転のみでは、U面に戻ってきたときのLLエッジの向きを変えることはできない。

したがって、いずれか1面の回転のみでは、LLエッジの色の向きを変えることができないことが分かります。

では、2面の回転の組み合わせではどうでしょうか。 2面の組み合わせとしては、大別して

  1. U面とD面、L面とR面のように、共通するピース部分が無いような組み合わせ
  2. U面とR面、R面とF面のように、隣り合う側面同士の組み合わせ

があります。1の場合は面が互いに干渉しないため、一面のみを個別に動かしている場合と同じですから、LLエッジの向きを変えることは出来ません。

では、2の場合について、例えば、U面とR面のように隣り合う2つの面を回す場合を考えてみましょう。 このように隣り合う二面を回転させる場合には、図のように面に共通部分があるので、エッジピースをこの位置に持ってくればU面とR面のどちらの方向にも影響をあたえることができます。 では実際に動かしてみましょう。

CFOP法の解釈:F2L編 その2

さて、前回は、F2Lを完成させるための中継地点として、

  • 正結合のペア (解法: R U’ R'):f:id:yuimat:20170601145650p:plain

  • 正分割のペア(解法: R U R'):f:id:yuimat:20170601145739p:plain

の2つの状態を作りました。 これらは、F2Lの完成形から「既にそろっているピースを2手以上ずらさずに行える最小の手順」で導かれました。 2手以上ずらさないという条件は、ズレにズレを重ねて複雑な操作になることを防ぎ、直感的で明解な操作で解法を構成するための重要な条件です。

この「2手以上ずらさない」という条件を置いた場合には、「あと一歩で完成する形」というのはこの2つ以外にはないことが言えました。 つまり、そろったピースを極力崩さない直観的な解法では、必ず最後にこの2つのいずれかを経由するということになります。

ここから先は、この2つの状態を完成直前の中継地点として考えて、F2Lペアの任意の初期状態から、これら2つの形のいずれかに辿り着く道筋を考えていきます。 この際、引き続きこれまでと同様「そろえたピースを2手以上ずらさない」という条件を用いて、なるべく直感的な操作で解法を構成することを試みます。 この方法で行き詰った場合のみ、条件を緩めて考えることにしましょう。

(前回の内容では、おまけ的に「2つ以上のF2Lスロットがそろっていない」という条件付きで導かれる「Key Hole」という名の4つの状態も導出しましたが、これらは条件付きの特殊な状態であり、上級者が使う高度な技法の1つなので、今回の記事では扱わず、後ほど別の記事で掘り下げたいと思います。)

復習:「2手以上ずらさない」操作

最初に、これまで考えてきた状況を復習しておきましょう。まず、今考えている状態は

  • クロス色は白で、クロスは解かれている
  • 青赤のF2Lペアを解こうとしている
  • 他の三つのスロットは全て解かれている

という状況のものでした。この状況で、既にそろえ終えたピースの部分を色付きで図示すると、

f:id:yuimat:20170601103031p:plain

のようになっていました。前回、この状態に対して、

  • 既にそろっているピースがずれることなく、
  • 青赤のF2Lペアの位置を変えられる可能性がある

操作列がどんなものかを考えました。 これは「既にそろっているピースを2手以上ずらさない」という条件の元では、

  1. 任意のU面回転:U, U', U2
  2. R → 任意のU面回転 → R'
  3. F' → 任意のU面回転 → F

の3パターンしかありませんでした。

青赤のF2Lペアをそろえている間は、既にそろえたピースをずらさずに考えたいことには変わりありません。 そこで、これから先の操作は、特別な断りをおかない限りは(既にそろっているピースを2手以上ずらすことを許さない限りは)、上記3パターンの組み合わせしか考えないことにします。

この考え方を念頭に置きつつ、任意の状態から「正結合ペア」「正分割ペア」を作る手順を実際に組み立てていきます。

F2Lペアが取りうる状態

まず、F2Lペアが取りうる状態についてあらかじめ一般化しておきたいと思います。

ここでは、

  • ターゲットスロットは右手前に固定する
  • U面の回転に関して合同な形は同一のグループにまとめ、代表例だけを示す
  • R面とF面に対して対角線対称となる状態は同一のグループにまとめ、代表例だけを示す

このような戦略で整理すると、F2Lペアの取りうる状態は、以下の23パターンになります。 (例によって名前は私が適当に付けました)

  1. F2Lペアが U面にある場合 [2U]
    1. U面に正結合の色がある(エッジ青・コーナー青)[2U-Connected]
      f:id:yuimat:20170604225252p:plain [2U-C] f:id:yuimat:20170604225326p:plain [2U-C-90] 
      f:id:yuimat:20170604225215p:plain [2U-C-180] f:id:yuimat:20170604225520p:plain [2U-C-270]
    2. U面に正分割の色がある(エッジ青・コーナー赤)[2U-Split]
      f:id:yuimat:20170604230251p:plain [2U-S] f:id:yuimat:20170604231236p:plain [2U-S-90] 
      f:id:yuimat:20170604230348p:plain [2U-S-180] f:id:yuimat:20170604230358p:plain [2U-S-270]
    3. F2Lコーナのクロス色が上にある(エッジ青・コーナー白)[2U-Twisted]
      f:id:yuimat:20170604232218p:plain [2U-CT] f:id:yuimat:20170605111940p:plain [2U-CT-90] 
      f:id:yuimat:20170605112007p:plain [2U-CT-180] f:id:yuimat:20170604232849p:plain [2U-CT-270]
  2. エッジがU面、コーナーがターゲットスロット内にある場合 [U-Edge]
    f:id:yuimat:20170604234344p:plain [UE] f:id:yuimat:20170604233546p:plain [UE-CR] f:id:yuimat:20170604234353p:plain [UE-CL]
  3. コーナーがU面、エッジがターゲットスロット内にある場合 [U-Corner]
    f:id:yuimat:20170605000550p:plain [UC] f:id:yuimat:20170604235713p:plain [UC-CT]  
    f:id:yuimat:20170605001600p:plain [UC-ET] f:id:yuimat:20170604235728p:plain [UC-CT-ET] 
  4. F2Lペアがターゲットスロット内にある場合 [0U]
    f:id:yuimat:20170603000738p:plain [Solved] f:id:yuimat:20170605002856p:plain [ET] 
    f:id:yuimat:20170605010653p:plain [CT] f:id:yuimat:20170605011838p:plain [ET-CT]

このうち1つは完成形 [Solved]、2つは正結合ペア [2U-C] と正分離ペア [2U-S] ですので、残りの20パターンを正結合ペアもしくは正分離ペアのいずれかの形に持っていく操作を考えなければなりません。 20パターンの解を考えるというのは、そこそこ骨の折れる作業のように思いますが、不思議なことに、実際にやってみるとそれほど大変ではありませんし、理解するのも比較的簡単です。

何故そんな魔法のようなことが起こるのでしょう。その秘密は今我々が置いている操作の制約にあります。

  • 今、キューブに対して行える操作というのは、たったの3パターンに限定されています。 しかもこれらは、そろえたピースを崩したらすぐに元に戻すように設計されたものなので、操作の直観的な解釈が明解です。

なるほど、操作が直感的に理解しやすいのはうれしいですね。

  • また、今考えている3パターンの操作は「既にそろえたピースの位置が崩れない」という前提なので、ある状態から3パターンのうちの1つの操作をした後の状態というのは、必ず上記23パターンのどれかに遷移しています。 すると残りの部分は、遷移後の状態の解法がそのまま使えることになります。 言い換えれば、ある状態からの解法というのは、必ず他の状態からの解法と後半部分が重複することになりますので、一つ一つ全く違うパターンを考えるのではなく、前半部分に少し操作が増えただけの似たようなパターンを考えればよいということが分かります。

なるほど、他の状態の解法に付け足し付け足しで解けるということなので、なんとなく手軽な気がしてきましたね。

ただし、これらは、 上記20パターンの全てが今考えている3パターンの操作だけで解ければ、という前提です。 もしかすると、この3パターンの操作だけでは同じ状態の間をループのように行ったり来たりしてしまい、永遠に「正結合ペア」や「正分離ペア」に辿り着けない状態たちがあるかもしれません。 本当に3パターンの操作だけで上記20パターン全てが解けるのでしょうか。

これは論より証拠ということで、実際に具体的な操作を見ていきましょう。 この証拠を示すには、前回と同様、完成状態から一手ずつ状態を巻き戻して考えるのが良さそうです。 今、完成直前の状態として「正結合ペア」と「正分離ペア」がありますから、まずはこれらをもう一段階崩した状態を考えていきましょう。

正結合ペアを一段階崩した状態

ここでは、正結合のペア

f:id:yuimat:20170601145650p:plain

をさらにもう一段階崩した形を考えます。 この状態を崩すために、今我々に出来る操作は

  1. 任意のU面回転
  2. R → 任意のU面回転 → R'
  3. F' → 任意のU面回転 → F

でしたので、まず、U面を回転させた状態を列挙してみます。

Uなし:f:id:yuimat:20170603001208p:plain U:f:id:yuimat:20170603002339p:plain  
U2f:id:yuimat:20170603002655p:plain U':f:id:yuimat:20170603002723p:plain

このそれぞれに対して、パターン2、3のいずれかを使って、F2Lペアをさらにずらせる操作を考えます。 「さらにずらす」というのは、操作の結果が上記4つ、正結合ペア、正分離ペア、完成形のどれでもない状態になるということです。 そのような操作は、

  • Uなし:変化させる操作なし
  • U:

    f:id:yuimat:20170605112224p:plain F' U' F [UC-CT-ET],  f:id:yuimat:20170605112243p:plain F' U2 F [UE-CR]

  • U2

    f:id:yuimat:20170605112139p:plain R U R' [UC], f:id:yuimat:20170605112106p:plain R U' R' [2U-C-90],
    f:id:yuimat:20170605112122p:plain R U2 R' [2U-C-180], f:id:yuimat:20170605112053p:plain F' U F [UE-CR],
    f:id:yuimat:20170605112043p:plain F' U2 F [UC-CT-ET]

  • U':

    f:id:yuimat:20170605111744p:plain F' U F [UC-ET], f:id:yuimat:20170605111817p:plain F' U' F [UE],
    f:id:yuimat:20170605111930p:plain R U R' [UE-CR], f:id:yuimat:20170605111940p:plain R U2 R' [2U-T-90],
    f:id:yuimat:20170605112007p:plain R U' R' [2U-T-180]

となります。 結果の状態が同一のものを省くと、これらの動作の結果得られる新しい状態というのは下記の9通りとなります。 (※「→」 の後の回転記号は正結合ペアにするための操作)

  1. F2Lペアが U面にある場合 [2U]
    1. U面に正結合の色がある(エッジ青・コーナー青)[2U-Connected]
      f:id:yuimat:20170604225326p:plain [2U-C-90] → R U R' f:id:yuimat:20170604225215p:plain [2U-C-180] → R U2 R'
    2. なし
    3. F2Lコーナのクロス色が上にある(エッジ青・コーナー白)[2U-Twisted]
      f:id:yuimat:20170605111940p:plain [2U-T-90] → R U2 R' f:id:yuimat:20170605112007p:plain [2U-T-180] → R U R' 
  2. エッジがU面、コーナーがターゲットスロット内にある場合 [U-Edge]
    f:id:yuimat:20170604234344p:plain [UE] → F' U F f:id:yuimat:20170604233546p:plain [UE-CR] → R U' R'
  3. コーナーがU面、エッジがターゲットスロット内にある場合 [U-Corner]
    f:id:yuimat:20170605000550p:plain [UC] → R U' R' f:id:yuimat:20170605001600p:plain [UC-ET] → U' R U R'  f:id:yuimat:20170604235728p:plain [UC-CT-ET] → F' U F 

つまり、正結合ペアをさらに一段階崩す操作によって、解かなければならない20パターンのうちの9通りをカバーしたことになります。

次に、正分割ペアに対して同様の操作を試してみましょう。

正分割ペアを一段階崩した状態

ここでは、正分割のペア

f:id:yuimat:20170604230251p:plain

をさらにもう一段階崩した形を考えます。 先程と同様に、まず、U面を回転させた状態を列挙してみます。

Uなし:f:id:yuimat:20170604230251p:plain U:f:id:yuimat:20170605145212p:plain
U2f:id:yuimat:20170605145225p:plain U':f:id:yuimat:20170605145242p:plain

このそれぞれに対して、パターン2、3のいずれかを使って、F2Lペアをさらにずらせる操作を考えます。 つまり、操作の結果が上記4つ、正結合ペア、正分離ペア、完成形のどれでもない状態になる操作を探すということです。 そのような操作は、

  • Uなし:

    f:id:yuimat:20170605150052p:plain F' U F [2U-T-180], f:id:yuimat:20170605150103p:plain F' U' F [UE-CL],
    f:id:yuimat:20170605150112p:plain F' U2 F [UC-CT-ET]

  • U:

    f:id:yuimat:20170605150530p:plain R U R' [2U-S-90], f:id:yuimat:20170605150404p:plain R U' R' [UE-CL],
    f:id:yuimat:20170605150416p:plain R U2 R' [2U-T], f:id:yuimat:20170605150351p:plain F' U F [UC-ET],
    f:id:yuimat:20170605150331p:plain F' U' F [2U-S-90], f:id:yuimat:20170605150340p:plain F' U2 F [2U-S-180]

  • U2

    f:id:yuimat:20170605151225p:plain R U R' [2U-T-180], f:id:yuimat:20170605151204p:plain R U' R' [UC],
    f:id:yuimat:20170605151214p:plain R U2 R' [UE-CL], f:id:yuimat:20170605151147p:plain F' U F [2U-S-90],
    f:id:yuimat:20170605151112p:plain F' U' F [2U-C-270], f:id:yuimat:20170605151131p:plain F' U2 F [UE]

  • U':

    f:id:yuimat:20170605150258p:plain R U R' [2U-S-270], f:id:yuimat:20170605150233p:plain R U' R' [2U-S-90],
    f:id:yuimat:20170605150244p:plain R U2 R' [UC], f:id:yuimat:20170605150224p:plain F' U F [UE],
    f:id:yuimat:20170605150203p:plain F' U' F [UC-ET]

となります。 結果の状態が同一のものを省くと、これらの動作の結果得られる新しい状態というのは下記の11通りとなります。 (※「→」 の後の回転記号は正分離ペアにするための操作)

  1. F2Lペアが U面にある場合 [2U]
    1. U面に正結合の色がある(エッジ青・コーナー青)[2U-Connected]
      f:id:yuimat:20170604225520p:plain [2U-C-270] → U' F' U F
    2. U面に正分割の色がある(エッジ青・コーナー赤)[2U-Split]
      f:id:yuimat:20170604231236p:plain [2U-S-90] → R U R' f:id:yuimat:20170604230348p:plain [2U-S-180] → F' U2 F f:id:yuimat:20170604230358p:plain [2U-S-270] → R U' R'
    3. F2Lコーナのクロス色が上にある(エッジ青・コーナー白)[2U-Twisted]
      f:id:yuimat:20170604232218p:plain [2U-T] → R U2 R' f:id:yuimat:20170605112007p:plain [2U-T-180] → F' U' F
  2. エッジがU面、コーナーがターゲットスロット内にある場合 [U-Edge]
    f:id:yuimat:20170604234344p:plain [UE] → F' U' F f:id:yuimat:20170604234353p:plain [UE-CL] → R U R'
  3. コーナーがU面、エッジがターゲットスロット内にある場合 [U-Corner]
    f:id:yuimat:20170605000550p:plain [UC] → F' U' F f:id:yuimat:20170605001600p:plain [UC-ET] → R U R'  f:id:yuimat:20170604235728p:plain [UC-CT-ET] → U' F' U2 F 

つまり、正分割ペアをさらに一段階崩す操作によって、解かなければならない20パターンのうちの11通りをカバーしたことになります。

残りの状態

これまで「正結合ペア」「正分割ペア」をさらに一段階崩すことによって得られる状態を見てきました。 それぞれの状態を作る手順の逆手順を回すことによって、以下の15個の状態については解法が得られたことになります。

  1. F2Lペアが U面にある場合 [2U]
    1. U面に正結合の色がある(エッジ青・コーナー青)[2U-Connected]
      f:id:yuimat:20170604225326p:plain [2U-C-90] → R U R' f:id:yuimat:20170604225215p:plain [2U-C-180] → R U2 R' f:id:yuimat:20170604225520p:plain [2U-C-270] → U' F' U F
    2. U面に正分割の色がある(エッジ青・コーナー赤)[2U-Split]
      f:id:yuimat:20170604231236p:plain [2U-S-90] → R U R' f:id:yuimat:20170604230348p:plain [2U-S-180] → F' U2 F f:id:yuimat:20170604230358p:plain [2U-S-270] → R U' R'
    3. F2Lコーナのクロス色が上にある(エッジ青・コーナー白)[2U-Twisted]
      f:id:yuimat:20170605111940p:plain [2U-T-90] → R U2 R' f:id:yuimat:20170605112007p:plain [2U-T-180] → R U R'  f:id:yuimat:20170604232218p:plain [2U-T] → R U2 R'
  2. エッジがU面、コーナーがターゲットスロット内にある場合 [U-Edge]
    f:id:yuimat:20170604234344p:plain [UE] → F' U F f:id:yuimat:20170604233546p:plain [UE-CR] → R U' R' f:id:yuimat:20170604234353p:plain [UE-CL] → R U R'
  3. コーナーがU面、エッジがターゲットスロット内にある場合 [U-Corner]
    f:id:yuimat:20170605000550p:plain [UC] → R U' R' f:id:yuimat:20170605001600p:plain [UC-ET] → R U R'  f:id:yuimat:20170604235728p:plain [UC-CT-ET] → F' U F 

残りは、次の5つです。

  1. F2Lペアが U面にある場合 [2U]
    • c: F2Lコーナのクロス色が上にある(エッジ青・コーナー白)[2U-Twisted]
      f:id:yuimat:20170604232849p:plain [2U-CT-270]
  2. コーナーがU面、エッジがターゲットスロット内にある場合 [U-Corner]
    f:id:yuimat:20170604235713p:plain [UC-CT]  
  3. F2Lペアがターゲットスロット内にある場合 [0U]
    f:id:yuimat:20170605002856p:plain [ET] f:id:yuimat:20170605010653p:plain [CT] f:id:yuimat:20170605011838p:plain [ET-CT]

もはやここまで来ると、3パターンの操作のいずれかを適当に行っても、既に解法を得たいずれかの状態に簡単に変更することが出来そうです。

f:id:yuimat:20170604232849p:plain [2U-CT-270] → R U' R' → U → f:id:yuimat:20170604233546p:plain [UE-CR]
f:id:yuimat:20170604235713p:plain [UC-CT] → R U R' → U' → f:id:yuimat:20170605112007p:plain [2U-T-180]   
f:id:yuimat:20170605002856p:plain [ET] → F' U F → U' → f:id:yuimat:20170604225215p:plain [2U-C-180] 
f:id:yuimat:20170605010653p:plain [CT] → R U' R' → U' → f:id:yuimat:20170604225326p:plain [2U-C-90] 
f:id:yuimat:20170605011838p:plain [ET-CT] → F' U F → U2f:id:yuimat:20170605112007p:plain [2U-T-180]

これで、

  1. 既に三つのF2Lスロットが解かれている状況において、
  2. 最後のF2Lピースが取りうる全ての状態から
  3. 「既にそろっているピースを2手以上ずらさない」という直感的に分かりやすい動作のみを使って解く

解法が導出できました。

他にそろえていないF2Lスロットがある場合

さて、これまで、そろえ終えたピースが多く、最も動かせる場所が少ない事例として、既に三つのF2Lスロットが解かれている状況のみを考えていました。 ただし、他にそろえていないF2Lスロットがある場合には、これまでに見ていないピースの状態がいくつかありえますので、最後にその部分を考えて終わりにします。

  1. 別スロット
    • F2Lピースのいずれかが、ターゲットスロット以外のスロットに入っており、もう一方がU面にある
    • 2つのF2Lピースのいずれも、ターゲットスロット以外の、ある1つのスロットに入っている
  2. スロット横断
    • F2Lピースがそれぞれ異なるスロットに入っている

1の場合は特に問題ありません。 これまで見てきたように、F2Lピースが正しい位置に入るためには、最終的に「正結合ペア」か「正分割ペア」のいずれかの形になる必要がありますが、これらはどちらも2つのF2LピースがU面にある状態でした。 ですから、今F2Lピースが入っているスロットがどこであろうと、そのスロットをあたかもターゲットスロットであるかのようにみなして、「正結合ペア」「正分割ペア」いずれかの型に持っていく操作をすれば、自然とピースはU面に出てきます。 また、このとき既にそろえている他のピースがずれることもありません。 「正結合ペア」「正分割ペア」が出来上がったら、U面を回して、目的のスロットに挿入すればよいだけです。

2の場合は、R U R' などでどちらか一方のF2LピースをU面に上げる必要があります。 引き上げてしまえば、状況は1と同じになります。 ただし、エッジかコーナーのいずれかが正しい向きでターゲットスロットに入っている場合には、前回導出した Key Hole の操作が有効な可能性があるので、そうでない方のピースをU面に引き上げるほうが得策です。

f:id:yuimat:20170601183633p:plain f:id:yuimat:20170601184052p:plain

(Key Holeが使える例)

まとめ

F2Lの上級者(中級者?)向け解法の原理を理解するために、そこで使われている考え方を解きほぐし、アルゴリズムの導出過程を再現しました。 具体的には、

  1. 既に三つのF2Lスロットが解かれている状況において、
  2. 最後のF2Lピースが取りうる全ての状態から
  3. 「既にそろっているピースを2手以上ずらさない」という直感的に分かりやすい動作のみを使って解く

解法を導出しました。 (※ 導出した解法にはF面の回転がありますが、F面はR面やL面に比べて回しにくいので、実際のアルゴリズムでは y や y' で持ち替えて、R面やL面の回転に変換して回す場合がほとんどです。 ただ、アルゴリズム導出の基本的な考え方は同じです。)

さて、この過程で見たように、

  1. 任意のU面回転を行い、
  2. 「R → 任意のU面回転 → R'」か「 F' → 任意のU面回転 → F」のいずれかを行う

という動作を1セットとして考えると、F2Lピースはどんな位置からでも、高々3セットの操作で解くことが出来ることが分かります。 また、実際のところ、3回の操作が必要なものは

f:id:yuimat:20170604232849p:plain [2U-CT-270] f:id:yuimat:20170604235713p:plain [UC-CT]  
f:id:yuimat:20170605002856p:plain [ET] f:id:yuimat:20170605010653p:plain [CT] f:id:yuimat:20170605011838p:plain [ET-CT]

の5パターンのみで、それ以外のほとんどは2回、そして「正結合ペア」と「正分離ペア」のみが1回の操作で解けることも分かりました。 この事実を知っておけば、なるべくこの最短回数の手順で「正結合ペア」「正分離ペア」を作れればタイムも縮まるということも理解できると思います。

次回は、OLLについて掘り下げたいと思います。

CFOP法の解釈:F2L編 その1

導入

前回は Cross の解法について理解しました。 今回は、次のサブステップである F2L について、理屈を掘り下げていきましょう。

F2L は First Two Layers の略で、その名のとおり、下から二層目までを完全にそろえるプロセスです。 現在、クロスのステップが終わり、下のようにクロスエッジとそれらが隣接するセンターキューブの色がそろった状況です。

f:id:yuimat:20170531143453p:plain

これを、下図のような状態に持っていきます。

f:id:yuimat:20170531143905p:plain

F2Lには、正しくそろえるための明確なアルゴリズム(具体的で完全な操作の手順)があります。 このアルゴリズムは、初心者向けと上級者向けの2つの方法があるようです。 それぞれの手順の概要を示すと、

  • [初心者向け] 一層目のコーナーピースを全部正しい位置に入れた後、二層目のエッジピースをそれぞれ正しい位置に入れる。

f:id:yuimat:20170601014040p:plainf:id:yuimat:20170601014207p:plainf:id:yuimat:20170601013953p:plain

  • [上級者向け] 4つある柱上のスロットに対して、それぞれ、一層目のコーナーピースと二層目のエッジピースをU面で合わせて同時に入れる。

f:id:yuimat:20170601014040p:plainf:id:yuimat:20170601013953p:plain

という感じです。 調べたところによると、やり方が覚えやすいのは初心者向けの方なのですが、ここでは敢えて上級者向けの方法をベースに説明したいと思います。 何故かと言うと、初心者向けの方法は、実際にやっていることをよくよく考えてみると、一度コーナーピースを正しい位置に入れた後、わざわざもう一度U面に出して、結局最終的に対応するエッジピースとコーナーピースをU面で合わせて二つ同時に入れ直す、という二度手間な操作をしているということが分かるからです。 30代になってから始める大人のルービックキューバーとしては、そんな格好悪いことはやりたくないですね。格好つけたいですね。

では、具体的に F2L の理論を掘り下げていきましょう。 以下に、今回の説明のための用語を定義しておきます。

  • F2Lコーナー: F2Lでそろえるべき一層目の4つのコーナーピース。
  • F2Lエッジ: F2Lでそろえるべき二層目の4つのエッジピース。
  • F2Lペア:隣接すべき F2L コーナーと F2L エッジのペア。例えば白クロスの場合、青と赤の両方の色を含むコーナーピースとエッジピースは F2L ペア。このペアを青赤のF2Lペアと呼ぶ。また、F2Lペアのいずれか1つのピースを F2Lピースと呼ぶ。
  • F2Lスロット: F2Lペアを最終的に入れるべき、4つの、2 × 1 × 1 の場所。
  • ターゲットスロット:ある F2Lペアが最終的に入るべき F2Lスロット。

問題設定

ここでは、説明にあたってこれから考えていく状況を一般化します。

Cross の場合と同様、F2Lの場合も色に関する対称性がありますので、クロス色が白で、青赤のF2Lペアを解こうとしている場合のみを例に取って考えていきます。 また、最も可動の制約がきつい、他の三つのスロットが全て解かれている状態を考えます(ただし、二つのスロットが解かれている状態の場合のみ使える手順も後で少し考えます)。 例えば、こういう状態ですね。

f:id:yuimat:20170531160326p:plain

この問題設定において、具体的にF2Lペアが取りうる状態と、それぞれに対する解法を一般化していきましょう。

中継地点の設定

F2Lペアの状態を一般化するにあたっては、まずそもそも「どのようにしたら、簡潔かつ明瞭な方法で解けるか」ということを考えなければなりません。 人間は、一度にたくさんのことを考えるのは苦手ですから、複雑な物事を解決するときは「道標」が必要です。 ここでいう「道標」というのは、長い手順の中の「考えの中継地点」です。 例えば、上にある [初心者向け手順] の例で言うと、「まずはとにかくコーナーピースを入れることに集中して」、「次にエッジピースを入れる」というように、適切な中間ゴールを設定することで、複雑な問題をより簡単な2つの問題に切り分けて考えることが出来ます。 また、図のように、中継地点があることによってスタートからゴールまでの道筋として考えなければならないパターンの数を絞り込むことが出来ます。

f:id:yuimat:20170601114903p:plain

状態の一般化というのは、これら、スタート地点、中間地点の状態を類型にまとめ上げる作業ですから、どのような中間状態を定めるかを考えなければ、一般化を考えることもできません。

そこで具体的にどういう中継地点を用意すれば簡潔かつ明瞭になるかというのが問題になります。 先の初心者向け解法は、中間ゴールが直感的に分かりやすいという点では明瞭性が高いのですが、手順の途中でわざわざ二度手間な操作を挟んでいて少し遠回りな解法になっています。 そこで、より効率の良い中継地点を設定したくなります。 初心者向け手順では、「F2Lコーナーが全て解かれた」という見た目に分かりやすい中継地点が置かれていたわけですが、その後の手順はそれほど単純ではありません。 上級者向け手順では、「見た目のわかりやすさ」ではなく「中継地点から後の解き易さ」と「中継地点へのたどり着きやすさ」を考慮して中間ゴールが設計されています。

さて、では実際に、上級者向け手順の中継地点がどのような考えで作られるのかを再現していきたいと思います。 この中継地点は「解き易さ」が基準ですので、まず、とても簡単に解けるいくつかの状態を考えて、そこを後ろから1番目の中継地点にします。 次に、より複雑な状態を「簡単な手順で」これらの簡単な状態に帰着させていく、ということ繰り返すことで、後ろから順に中継地点を設定していき、手順の道筋を明瞭化していきます。

完成形を僅かに崩した状態

まず、簡単に解ける例として、F2L が完全に解かれている状態から少しだけ崩した状態を考えたいと思います。 「少し崩した状態」というのは具体的にどういう形がありうるでしょうか。 ここで、注意しなければならないのは、せっかくそろえたクロスや他のF2Lスロットのペアを壊さないように回したいということです。 どのような動きをすると、すでにそろえているクロスやF2Lペアに影響があるか考えてみましょう。

今、青赤以外のスロットは全てそろっていると仮定すると、動かしたくないピースの領域は下図での色付きのピースの部分として表せます。

f:id:yuimat:20170601103031p:plain

このとき、U面はどんなに回してもすでにそろえたクロスとF2Lピースに影響を与えません。 一方で、それ以外の面は、無条件にどんな操作でもしていいわけではありません。 なので、基本的には、この自由に回せるU面と、その他の面において許される動きを駆使して残りのF2Lペアをそろえていくことになります。

では、U面以外の面は、どのような動きなら許されるのでしょうか。 上図の状態では、U面以外を回転させると、必ず既にそろえたピースがどこかでずれてしまうことがわかると思います。 動かすたびにそろえたピースがどんどんずれていってしまうと困りますので、基本的な考え方として、U面以外の回転をして、そろっていたピースがずれてしまったら、「それ以上さらにずれる」前に、そのずらした分を元に戻さなければならないものとして考えます。

つまり、 R したら R'

f:id:yuimat:20170601103031p:plain → R → f:id:yuimat:20170601104140p:plain → R' → f:id:yuimat:20170601103031p:plain

F したら F'

f:id:yuimat:20170601103031p:plain → F → f:id:yuimat:20170601104345p:plain → F' → f:id:yuimat:20170601103031p:plain

というように、必ず逆回転で元に戻すことにしようというわけです。 ただし、ある回転の手順をした後に、すぐにその逆手順をするのでは元の状態に戻るだけで何も変化がありません。 R と R´ の間、あるいは F と F' の間に、何か別の操作をしなければなりません。

さて、ここで R をした後の状態と F をしたあとの状態に重要な違いがあることが分かるでしょうか。 ヒントは、上図のグレーの部分は、まだそろえていないピースを表している部分なので、その部分は自由に動かしても良いということです。

実は、R をした後の状態では、U面には1つも色の付いたピースが乗っていませんから、U面を自由に回すことが出来ます。 しかし、F をした後の状態では、色の付いたピースが1つも乗っていない面というのはありません。 つまり、この状態でどこかの面を回すと、F でずらした上に、さらに別方向にもう一段の新しいズレを産んでしまうことになります。 ズレを何段も重ねることは、手順の明瞭さの観点からなるべく避けたいことですので、ここではこのような2手以上のズレを引き起こす動きは禁止することにします。

つまり、R と R' の間では、U面の回転であれば既にそろっているピースに影響を与えずに行える

f:id:yuimat:20170601103031p:plain → R → f:id:yuimat:20170601104140p:plain → U面を回せる → R' → f:id:yuimat:20170601103031p:plain

のに対して、F と F' の間では、どの面の回転も、さらなるズレを生じさせるため回せないということです。

f:id:yuimat:20170601103031p:plain → F → f:id:yuimat:20170601104345p:plain → どこも回せない → F' → f:id:yuimat:20170601103031p:plain

この性質の違いを全ての回転方向に関して書き下すと

  • R: R → 任意のU面回転 → R' が許される
  • F': F' → 任意のU面回転 → F が許される
  • D: D → 任意のU面回転 → D' が許される
  • D': D' → 任意のU面回転 → D が許される
  • D2: D2 → 任意のU面回転 → D2 が許される
  • それ以外の回転:その回転の後に追加で別の面を回すと、既にそろえ終えたF2Lペアやクロスエッジにさらなるズレが生じてしまう。

ということになります。つまり、既にそろえたピースを崩さないような動きというのは(2手以上のズレを許さない、という仮定のもとにおいては)、

  • U面を動かす:U, U', U2
  • 側面を動かす
    • R → 任意のU面回転 → R'
    • F' → 任意のU面回転 → F
  • D面を動かす
    • D → 任意のU面回転 → D'
    • D' → 任意のU面回転 → D
    • D2 → 任意のU面回転 → D2

の8通りのパターンしか存在しないことになります。

このことを念頭に、「完成形を少し崩した状態」を考えてみましょう。まず、完成系は下図の状態です。

f:id:yuimat:20170601013702p:plain

この状態に対してU面を動かしても状態を変化させないことは明白ですので、上の8パターンのうち、残りの5パターンを考えてみます。

完成形を僅かに崩した状態(側面を動かすパターン)

側面を動かす場合の2パターンですが、これらは向きに関する対称性がありますので、ここでは R → 任意のU面回転 → R' の場合だけ考えます。 このパターンは、 R U R'、R U' R'、R U2 R' の3通りに書き下せます。

  • R U R' と R U2 R' :

f:id:yuimat:20170601145650p:plain f:id:yuimat:20170601145714p:plain

  • R U' R' :

f:id:yuimat:20170601145739p:plain

このうち、R U R' と R U2 R' は、それぞれ手順を行った後に U面の回転を加えれば同一の状態になりますので、1つの状態とみなします。 したがって、二つの F2LピースがU面上で

f:id:yuimat:20170601145650p:plainf:id:yuimat:20170601145739p:plain

のいずれかの形になっていれば、これらがまさに「完成形を僅かに崩した状態」です。 これらの状態は「既にそろっているピースを2手以上ずらさずに行うことができる最小の手順」で解ける状態ということになります。 これらを、完成直前の中継地点として設定することにしましょう。

後の説明のために、これらの状態には以下の名前をつけておきたいと思います。

  • 正結合のペア (解法: R U’ R'):f:id:yuimat:20170601145650p:plain

  • 正分割のペア(解法: R U R'):f:id:yuimat:20170601145739p:plain

完成形を僅かに崩した状態(D面を動かすパターン)

D面を動かす場合の手順は3パターンありました。先程と同様に、この手順を使って完成形から少し崩すことを考えたいのですが、実は、ここで根本的な気づきがあります。 D面をずらすだけでは、

  • f:id:yuimat:20170601013656p:plain → D → f:id:yuimat:20170601155311p:plain → 任意のU面回転 → D'
  • f:id:yuimat:20170601013656p:plain → D2 → f:id:yuimat:20170601155252p:plain → 任意のU面回転 → D2

のように、今ずらそうとしている青赤のF2Lペアは下の2層にとどまったままです。 この状態でどんなにU面を回しても、青赤のF2Lペアに影響をあたえることは出来ないので、結局最終的に元の

f:id:yuimat:20170601013656p:plain

の位置に戻ってきてしまいます。つまり、これらの操作のパターンでは「完成形を僅かに崩した状態」が作れないことがわかります。 ですから、結局のところ、上述の「正結合のペア」と「正分割のペア」の二つが、完成形から最短の操作でできる中間状態となります。

さて、「完成形を僅かに崩した状態」の検討をここで終えてしまってもよいのですが、せっかく動かせるはずのD面を使って完成形を崩す手順が1つもないというのは何だかつまらないですね。 そこで、前提条件として置いている制約を少し緩めてみて、もうちょっとだけ考えてみましょう。

今、我々にとってキューブを回転させる方向を縛っている制約というのは、

  1. 他の3つのF2Lスロットが全てそろっている
  2. 既にそろえ終えたピースを2手以上ずらすことをしない

という二つのものでした。これらの制約をそれぞれちょっとだけ緩和してみましょう。 まず、1の条件を「2つのF2Lスロットのみ完成している」状態に緩めてみましょう。 先程と同様に、既にそろえてしまったピースの色のみを図示すると、2つのF2Lスロットが完成している状態というのは、対称なものを除けば

f:id:yuimat:20170601162202p:plain f:id:yuimat:20170601161813p:plain

(※注:二つ目の図は左後ろのスロットもグレー)

の二通りがあります。この緩和によって、動かしても良いグレーの領域が少し広がりました。 このとき、1つ目の例に D や D' の操作を加えると、

f:id:yuimat:20170601162202p:plain → D → f:id:yuimat:20170601162252p:plain

f:id:yuimat:20170601162202p:plain → D' → f:id:yuimat:20170601180730p:plain

2つ目の例に D2 の操作を加えると、

f:id:yuimat:20170601161813p:plain → D2 → f:id:yuimat:20170601174541p:plain

のようになります。 ここで注目すべきなのは、この状態は、最初に考えていた

f:id:yuimat:20170601103031p:plain

の状態の特性である「グレーのスロットがどこかに1つ出来ていて、かつU面が完全にグレー」と同様の特性を持っていることがわかります。 違いは、(1)スロットの位置と(2)一層目が一手分ずれている(D2も一手とみなす)こと、(3)グレーのピースが二つ分増えていることです。 つまり、

f:id:yuimat:20170601103031p:plain

に対して、そろえたピースを崩さないような動きというのは、そのまま、

f:id:yuimat:20170601162252p:plain f:id:yuimat:20170601174541p:plain

にも使えるということになります。

f:id:yuimat:20170601180730p:plain の場合は、左手前スロットがグレーなので、右手前の場合と比べて左右対称の動きにする必要がありますが、基本的に出来る操作は同じです。

そこで、ここで2の条件を緩めて「さらにあと一手だけはズレるのを許す」とすれば、先に説明した、そろえたピースを崩さないような動きのセット

  • U面を動かす:U, U', U2
  • 側面を動かす:R → 任意のU面回転 → R'、F' → 任意のU面回転 → F
  • D面を動かす:D → 任意のU面回転 → D'、D' → 任意のU面回転 → D、D2 → 任意のU面回転 → D2

のうち、「完成形から崩すことが出来る」動きであった

  • R → 任意のU面回転 → R'
  • F' → 任意のU面回転 → F

の操作を加えることで、D面の動きを加えながら「完成形を僅かに崩した状態」を作ることが出来ます。

具体的にやってみましょう。 今、完成形としては、2つのF2Lスロットがあらかじめそろっていたところに、3つめのスロットである青赤のペアをちょうど正しい位置に入れ終えた場面を考えます。

f:id:yuimat:20170601174214p:plain f:id:yuimat:20170601175253p:plain

(※注:2つ目の図は左後ろのスロットがグレー)

まず、1つ目の図では、今考えている手順は、例えば

f:id:yuimat:20170601174214p:plain → D → f:id:yuimat:20170601174255p:plain

としてから、これに「R → 任意のU面回転 → R'」などの手順を加え、その後、D' で一層目を元に戻す、というものです。 【完成形を僅かに崩した状態(側面を動かすパターン)】で見たように、間に挟む手順としては、 操作の対称性から

  • R U R'
  • R U' R'

の二通りを代表例として考えれば十分ですので、全体として行う操作は、 D 側に動かした場合の

  • D R U R' D'
  • D R U' R' D'

と、D' 側に動かした場合(この場合、左手前スロットがグレーなので、間に挟む手順が左右鏡写しになります)の

  • D' L' U' L D
  • D' L' U L D

の4通りが考えられます。 それぞれ、実際に実行してみると

  • (1) D R U R' D' と (2) D R U' R' D':

f:id:yuimat:20170601180306p:plain f:id:yuimat:20170601183633p:plain

  • (3) D' L' U' L D:

f:id:yuimat:20170601184019p:plain 

  • (4) D' L' U L D:

f:id:yuimat:20170601184052p:plain

という4つの状態が得られます。 このうち、最初の2つはU面を回すことで同一視出来ます。 残りの2つについても、少し工夫すると形の対称性をみることができます。 まず、これら2つに y' をして、グレーのスロットを 右手前に持ってきた位置を考えてみます。 y' により、もともと L面だったところは F面になるので、L と L' の操作が F と F' に置き換わります。

  • (3') 作成手順:y' D' F' U' F D → f:id:yuimat:20170602093147p:plain 解法:D' F' U F D

  • (4') 作成手順:y' D' F' U F D → f:id:yuimat:20170602100604p:plain 解法:D' F' U' F D

ここで、(4') の図に対して操作 U を加えてあげると、

(4') f:id:yuimat:20170602100604p:plain → U → (4'‘) f:id:yuimat:20170602100215p:plain

となり、 (3') と (4'‘) の間でF2Lコーナの位置がR面とF面に関して対角線対称な位置関係になっているのが分かるでしょうか。

(3') f:id:yuimat:20170602093147p:plain vs. (4'‘) f:id:yuimat:20170602100215p:plain

(4') の解法では、F2Lコーナーを一層目に入れるために F' U' F としていましたが、作成手順に U を足したことにより、(3')と対角線対称な関係になりましたので、(3') で使っている「F' U F」と対称な手順「R U' R」に置き換えることができます。

したがって、 (3') と (4'‘) の解法を比べると、

  • (3') 作成手順:y' D' F' U' F D → (3') f:id:yuimat:20170602093147p:plain 解法:D' F' U F D

  • (4'‘) 作成手順:y’ D' F' U F D U → (4'‘) f:id:yuimat:20170602100215p:plain 解法:D’ R U' R' D

となり、D面以外の手順に関しての対象性があることが確認できると思います。D面の回転に関してはそのままなので、完全に対称な手順ではありませんが、ここではこれらの2つも同一視したいと思います。

これらの結果として、

  • 正エッジ・隣接 Key Hole(解法:D R U' R' D')f:id:yuimat:20170601180306p:plain

  • 正コーナー・隣接 Key Hole(解法:D' L' U L D)f:id:yuimat:20170601184019p:plain

の2つの状態を得ます。 これらは、隣接する2つのF2Lスロットがそろっていない場合限定の中間ゴールとして利用できます。

次に、2つ目の図

f:id:yuimat:20170601175253p:plain

(※注:左後ろのスロットがグレー)

ですが、これは D2 をした時にちょうど右手前と左手奥の二箇所に青赤スロットのピースとまだそろえていないスロットのピースが散らばる形です。

f:id:yuimat:20170601185158p:plain

つまり、この対角線上の2つのスロットについてはピースを動かしてもよいということになります。 ですので、全体として行う操作は、 D2 をした後に右手前のスロットに対して操作を加える

  • D2 R U R' D2
  • D2 R U' R' D2

と、左手奥のスロットに対して回転対称な操作を加える

  • D2 L U L' D2
  • D2 L U' L' D2

の4通りが考えられます。 それぞれ、実際に実行してみると

  • D2 R U R' D2 と D2 R U' R' D2:

f:id:yuimat:20170601185454p:plain f:id:yuimat:20170601185530p:plain

  • D2 L U L' D2 と D2 L U' L' D2:

f:id:yuimat:20170601185606p:plain  f:id:yuimat:20170601185629p:plain

という4つの状態が得られます。 先程と同様、このうちの最初の2つはU面を回すことで同一視出来ます。 残りの2つも後者に U' を加えると先程と同様の考え方で同一視出来ます(この場合はD面の動きが D2 なので完全に対称性があります)。 したがって、最終的に2つの状態を得ます。

  • 正エッジ・対角 Key Hole(解法:D2 R U' R' D2)f:id:yuimat:20170601185454p:plain

  • 正コーナー・対角 Key Hole(解法:D2 L' U L D2)f:id:yuimat:20170601185606p:plain

これらは、対角線上にある2つのF2Lスロットがそろっていない場合限定の中間ゴールとして利用できます。

実のところ、2つのF2Lスロットがそろっていない場合にD面を駆使してそろえるこれら4つの手順は上級テクニックの1つとして広く知られており、 「Key Hole」という名前で呼ばれています。

まとめ

F2Lの完成形から「既にそろっているピースを2手以上ずらさずに行うことができる最小の手順」を用いて新たな形を求め、これをF2Lの中間ゴールとして定めました。 これらは、

  • 正結合のペア (解法: R U’ R'):f:id:yuimat:20170601145650p:plain

  • 正分割のペア(解法: R U R'):f:id:yuimat:20170601145739p:plain

の2つでした(名前は私が適当につけました)。 また、隣接する2つのF2Lスロットがそろっていない場合限定の中間ゴールとして

  • 正エッジ・隣接 Key Hole(解法:D R U' R' D')f:id:yuimat:20170601180306p:plain

  • 正コーナー・隣接 Key Hole(解法:D' L' U L D)f:id:yuimat:20170601184019p:plain

の2つを定めました。

対角線状にある2つのF2Lスロットがそろっていない場合限定の中間ゴールとして

  • 正エッジ・対角 Key Hole(解法:D2 R U' R' D2)f:id:yuimat:20170601185454p:plain

  • 正コーナー・対角 Key Hole(解法:D2 L' U L D2) f:id:yuimat:20170601185629p:plain

の2つを定めました。

次回は、これらの中間ゴールを作るための手順について考えていきます。

CFOP法の解釈:Cross編

導入

今回は、CFOP法の第一ステップである Cross を掘り下げたいと思います。 CFOP法は、キューブの下から上に向かって順に揃えていく手法ですが、中でも、Crossは一番下の層のエッジをそれぞれが隣接するセンターピースの色とそろえ、下の図のような十字を作るプロセスです。

f:id:yuimat:20170527123342p:plain

この図では、見やすさのために上下を逆さまにしてありますが、実際には白を一番下の層にしてそろえるようです。

「エッジを隣接するセンターピースの色とそろえる」というのは、白と白を隣接させるだけではなく、図のように、側面の色もセンターピースの色とそろえる必要があります。 側面の色がずれている状態では最終的にルービックキューブ全体の色をそろえることはできないので当然といえば当然ですね。

さて、ではどのようにしてクロスをそろえるのかを考えます。 クロスはどの色の面でそろえてもいいのですが、ここでは簡単のため、図と同じ白の面のクロスをそろえることとして説明したいと思います。

まず、説明のための用語を定義します。 ルービックキューブの各ピースはその色の数に応じて次のように呼ぶことにします。

  • センターピース:1色のピース。各面の中央にある。
  • エッジピース:2色のピース。各面の辺にあたる場所にあり、2つのセンターピースと隣接している。
  • コーナーピース:3色のピース。立方体の角の位置にあり、3つのエッジピースと隣接している。

クロスをそろえる面の色をクロス色と呼びます。また、この面をクロス面と呼びます。 また、クロスをそろえるために必要な4つのエッジピースをクロスエッジと呼ぶことにします。 図の例では、クロス色は白なので、クロスエッジは、白赤、白青、白緑、白橙の色を持つ4つのエッジピースです。

操作の説明に利用する回転記号については、こちらの二つのサイトを参照して下さい。 (日本流と海外流で若干違いがあるようです)

ruwix.com

では、始めましょう。

状態の一般化

ここでは、それぞれのクロスエッジのが取りうる状態を一般化します。

今回はまだCFOP法への入門段階ですから、基本中の基本である、クロスエッジを一つ一つ順にそろえていく方法を考えたいと思います。 さて、ルービックキューブの色に対する対称性から、次のことが言えます。

  1. クロス色としてどの色を選んでも解き方は変わりません。
  2. 同様に、一つのクロスエッジをそろえるとき、どの色のクロスエッジを選んでも、解き方は変わりません。

そこで、ここではクロス色を白として考えます。 また、今解こうとしているエッジの色が白赤の場合を例にとります。 白赤以外の他の三つのクロスエッジの状態ですが、これらがすでに正しい位置に入っている状態というのが、回せる面が少ない、最も制約がきつい状態ですので、この場合を代表例として考えます。 それ以外の場合は、全てこの状態の緩和形ですので、これから考える解法と同様の方法で解くことができるはずです。

さて、問題の状況は、例えばこのような状態です。

f:id:yuimat:20170527170826p:plain

最初の図で説明したとおり、クロスエッジの各ピースは、それぞれ隣接する二つのセンターピースと色が一致している必要があります。 ただ、解いている最中には、必ずしも側面のセンターピースの色は一致している必要はなく、 それぞれのクロスエッジの相対的な位置関係があってさえいればよいです。 それはなぜなら、センターピースとの色がずれていても、エッジの色の相対的な位置関係があっていれば、最後にクロス面を回転させてセンターピースと色を一致させることが出来るからです。 例えば、上図の場合は、緑のクロスエッジの右に赤のクロスエッジ、緑の左に橙、緑の裏側に青のクロスエッジがくるのが正しい位置関係です。 それが満たされていれば、

f:id:yuimat:20170528173958p:plain であっても、 f:id:yuimat:20170528174034p:plain であっても、 f:id:yuimat:20170528174108p:plain であっても、 最終的にU面を回すことで f:id:yuimat:20170528174156p:plain になります。

さて、今考えている状況は、3つのクロスエッジが既に正しい相対位置で解かれていて、 最後のクロスエッジを正しい位置に入れようとしている状況なので、仮定より、 クロスエッジの相対的な位置関係は必然的に合っているという状況です。 したがって、側面のセンターピースの色とクロスエッジの色は、全てのエッジをそろえたあとに位置合わせできるので、 側面のセンターピースの色は無視して状態を一般化出来ます。

では、実際に白赤のエッジが取りうる状態を一般化してみましょう。

  1. まず、クロス面がU面となるようにキューブを持ちます。
  2. 次に、クロス面をU面に保ったまま、y, y' の持ち替えによって、白赤エッジがR面の何処かに来るようにキューブを持ち替えます。
  3. 最後に、U面を回転させ、白赤エッジが最終的に入るべきクロスの位置がU面の右側(位置UR)に来るようにします。

このような操作を経ることで、白赤のエッジが取りうる状態は次の2種類に大別できます。

  1. R面にクロス色(白)がない
    • f:id:yuimat:20170527205002p:plain
    • f:id:yuimat:20170527212233p:plain 解法: R f:id:yuimat:20170527205139p:plain 解法: R'
    • f:id:yuimat:20170527212444p:plain 解法: R2
  2. R面にクロス色(白)がある
    • f:id:yuimat:20170527212520p:plain 解法: R U F' or R d R'
    • f:id:yuimat:20170528112957p:plain 解法: U F' or d R' f:id:yuimat:20170528113048p:plain 解法: U' B or d R'
    • f:id:yuimat:20170527212404p:plain 解法: R' U F' or R' d R'

エッジの状態は必ずこの8種類のうちのいずれかのはずです。a のグループは、R面を回転させることで簡単に解けることがわかると思うので、説明は省略します。 すこし工夫が必要なのは b のグループです。以下では、こちらを掘り下げて説明します。

b. R面にクロス色(白)がある

このグループは、R面を回転させることでかならず下図の形にできるので、この形を代表例として考えることにします。

f:id:yuimat:20170528112957p:plain

図の状況でクロスエッジをそろえるためには、エッジピースの白の面を上に持ってくる必要があります。 ここでは、F' で白の面を上に引き上げることができますが、 白赤以外のクロスエッジはすでに正しい位置にそろえられてしまっているので、 この状況で F面を回すと、せっかくそろえたクロスエッジの位置がずれてしまいます。 図の状況では、すでにそろえたクロスエッジの相対的な位置関係に影響を及ぼさずに回せる面は、D面、R面、U面のみです。

ただし、ここで重要なポイントがあります。 それは、U面を回すことによって、動かしても良い面を変化させることが出来るということです。 例えば、1つ目の図の状況から U (U面を時計回りに90度)をした状況を考えます。

f:id:yuimat:20170528114831p:plain

先程までは動かしても良かった面はU面、D面、R面でしたが、この操作によって、R面には別の正しいクロスエッジが乗ってしまったので、動かすことができなくなります。 一方で、F面には、正しいクロスエッジが乗っていない状態になったので、今度はU面、D面、F面が動かしても良い状態になりました。 このように、U面を動かすことで、回転させても良い面を変えることが出来ます。

さて、もともとこの図では、F' の操作ができれば白の面を上に引き上げることができました。 しかも、U面を動かしたことによって、引き上げた先は、ちょうど白赤エッジを入れるべき位置と一致することになりました。 F' することで、無事に白赤エッジを解くことができます。

つまり、 f:id:yuimat:20170528112957p:plain の解法は: U F' であり、この方法を使って b のグループの全ての状態を解くことができることが分かります。

また、別の観点からも簡単な説明が出来ます。 実のところ、Uをした時点でのの形は、視点を変えると a のグループと一致します。ここで、U のあと y' で視点を変えると、

f:id:yuimat:20170528112957p:plain → U → f:id:yuimat:20170528114831p:plain → y' → f:id:yuimat:20170528113048p:plain

のように、a のグループのうちの一つの形になっていることがわかります。あとは、R面を回すだけですね。

これで、

状況のとき、正しくクロスを作ることができるようになりました。

すでにそろっているクロスエッジが0〜2個の場合も、この場合とおおよそ同様の解法で解けます。 ただし、白赤エッジが正しくないクロスエッジの位置にセットされている場合には、このままの方法では解けません。 この場合は、最初の一般化の操作を

  1. まず、クロス面がU面となるようにキューブを持ちます。
  2. 次に、クロス面をU面に保ったまま、y, y' の持ち替えによって、白赤エッジがR面の何処かに来るようにキューブを持ち替えます。
  3. 白赤エッジがU面にあり、かつ、白赤エッジが最終的に入るべきクロスの位置ではない場所に入っている場合、 R' して真ん中の層に移動させます。
  4. 最後に、U面を回転させ、白赤エッジが最終的に入るべきクロスの位置がU面の右側(位置UR)に来るようにします。

とすれば、あとは同様の方法で解くことが出来ます。

ここまでで、クロスを作るための原理は説明できました。 次回は、F2Lの原理を解明しましょう。

CFOP法の解釈

大人になってからスピードキュービングを始める身としては、 単に速く解けるようになるだけでは何となく面白くありません。

解法を学ぶにあたっては、どのようなロジックで解法が出来上がっているのか、 また、どうしてそのような形に解法が最適化されているのか、ということを掘り下げていき、 ルービックキューブのパズル的な側面や、アルゴリズムと人間の思考の相性といった側面への 理解を深めつつ、考察を楽しみながら進めていきたいところですね。

私が実際にスピードキュービングを始めようと思ったのは昨年の7月のことでしたが、最初の一ヶ月は速く解くことは考えずに、何故このアルゴリズムで解けるのかということを徹底的に掘り下げて、理屈を理解してから、その後、実際にスピードキュービングの練習をはじめました。解法の理論的理解は、その後の練習においてアルゴリズムと直感的な感覚を結びつけるのにも役立ちましたし、また、例えば高校数学で「ただ単に公式を覚えて使っていることにつまらなさを感じていた」私のような性格の人間にとっては、早解きの練習しているときにもきちんと面白さを感じるための良い材料になったと思います。

そういうわけで、この感覚を皆さんと共有するために、ここからは当時のことを振り返りながらアルゴリズムの理論的説明を試みてみます。

さて、前回、当面の解法としてCFOP法を採用することにしました。 CFOP法は、4つのサブステップを順にこなす解法で、 それぞれのサブステップは

  • Cross
  • First Two Layers (F2L)
  • Orientation of Last Layer (OLL)
  • Permutation of Last Layer (PLL)

と呼ばれます。CFOPという名前は、これらのサブステップの頭文字から取られたようです。 それぞれのサブステップが具体的にどういうことをするかについては、各種入門サイト (初めてのルービックキューブ | tribox, ルービックキューブのそろえ方 | Cube Voyage)に解説を譲るとして、 ここでは、何故この手順でそろうのかということを掘り下げていきたいと思います。

次回以降、サブステップ毎に順にやっていきたいと思います。

初めての speed cubing algorithm

スピードキュービングを始める前に、まずはルービックキューブの解き方を学びたいと思います。 こういうところでも、徹底的な調査に基づき、形から入るのが大人の楽しみ方です。

ルービックキューブの解法には、実に様々なものがあるようですが、 私が調べたところによると、スピードキュービングに使われる解法として現在主流なものは、次の4つのようです。

  • CFOP 法
  • Roux 法
  • ZZ 法
  • Petrus 法

どの手法も、少なくとも10秒くらいまではいけるようです。 また、世界のトッププレーヤを見ると、CFOP法、もしくはRoux法をベースにした手法で好タイムが出ているようです。

CFOP法: www.youtube.com

Roux法: www.youtube.com

利用者の人口で言えば、圧倒的にCFOP法が多いようです。 また、利用人口の差からなのか、手法の論理的な説明方法が確立されているからなのか、 手法に関する情報(解説、発展的な亜種)も豊富なのはCFOP法です。

そういった点では、最初に学ぶのに最適な手法はなんといってもCFOPでしょう。 最初の取っ掛かりとして、練習法やテクニックの解説などが豊富で、 自分のセンスや力量にあった解説を取捨選択できるくらいに十分な量の情報が出回っているということはとても重要だと思います。 ひとまず、最初のうちはこのCFOP法で行くことにします。

CFOP法は、4つのサブステップを順にこなす解法で、 このアルゴリズムの中で用いる Cross, F2L, OLL, PLLというそれぞれのサブステップの頭文字をとってこう呼ばれているようです。

調べていくと、CFOPは最初に学ぶ解法としても、スピードキュービングを極めていくための解法としても、 実に魅力的な解法であることが分かってきました。それは、CFOP法が次の3つの特徴を持っているからです。

  1. 超初心者向けのわかりやすい手順があります。そろえ方すら分からない人でもすぐに学び始められます。
  2. 初心者向けの手順に順次組み込んでいけるより高度な手順が数多くあり、かなり小刻みに段階的ステップアップが出来ます。
  3. ワールドチャンピオンが使っています。

入門しやすいばかりか、段階的に成長でき、かつ極めればワールドチャンピオン級になれる、ということです。 夢のある話ですね。さっそくやっていきたいと思います。

最初のキューブの選び方

スピードキュービング入門サイトには、 まず、ルービックキューブを始めるにあたって、「競技用の専用キューブを買いなさい」とあります。

私としては、「まずは一般的な解き方で、何故それで解けるかという理屈を自分できちんと理解してから、その後で改めてスピードキュービングに入門」 というぐらいの気持ちだったので、最初は競技用キューブじゃなくても良いか、と思っていましたが、実際に買ってみると、 ただ単にルービックキューブをやりたいだけの人でも、競技専用キューブを買ったほうが良いと思いました。

その理由は二つあります。

  • 圧倒的に回しやすい。(ストレス体感で50倍くらい)
  • 純正のキューブ(2000円前後)に比べて値段が十分に安い(500〜2500円)

実際に回したことがある人はわかると思うんですが、純正のルービックキューブは角がピッタリあっていないと引っかかってしまい、 結構回しにくいです。一方、競技用のキューブは内部のいろんな角が落としてあって、多少ずれていても引っかからない構造になっています。 回しやすいというのは、つまるところやっているときに余計なストレスを感じないということで、 楽しさに直結する非常に重要なファクターです。競技用キューブとそうでないキューブは、ストレスの体感が劇的に違うので、 絶対に競技用キューブを買ったほうがといと思いました。 値段もむしろ競技用キューブのほうが安いくらいなので、あまり迷う余地はないかと思います。

3×3×3の競技用キューブはこちらでたくさんの種類が販売されています。

store.tribox.com

ただ、いっぱいあってどれを選ぶか迷うと思います。 私がおすすめしたいのは、この方法です。

  1. まずは売れているやつ、もしくは見た目が好きなやつから適当に一つ選んで買う。
  2. しばらくやってみて、スピードキュービングをちゃんとやってみたいなと思ったら、上級者が使っているものから3〜4個買ってみて試してみる

という方法です。

最初のうちは、正直競技用キューブであればどれでも大丈夫だと思います。 ただ、しばらくして、いくつかの競技用キューブを買って触ってみた感触は「製品ごとの差を結構感じる」でした。 スピードキュービングを本格的に始めることに決めたら、 その後のキューブの上達への近道は、なんといっても「回していて楽しいか」。これに尽きると思います。

そういう点では、世の中にはいろんなレビューなどが出回っていて、それはそれで参考にはなりますが、 誰かがなんと言っていても、それはあくまで他者の意見であって、結局のところ 本当に自分が回していて楽しく感じるかどうかは、 実際に自分で回してまでわからないな、というのが私の感想でした。

なので、とにかく最初はオススメキューブをいくつか手にして回してみましょう。 最近のキューブはどれも本当に優れているので、すぐに気に入るものが見つかると思います。 自分にあったメインキューブを決めたら、残りのキューブは友達や家族にあげて、話の種にしたりすれば良いかと思います。

ちなみに、私が最初に買ったのは YueXiao Stickerless でした。これはこれで大変気に入ったのですが、 いろいろ試してみたいと思い、 WeiLong GTS も購入。ひとまずこの二つでやっていこうと思います。

30代から始める Speed cubing

きっかけは、とある学会でGoogleが球状のルービックを配布していたのを目にしたことでした。

「そういえば、ルービックキューブってどうやって解くんだっけ…?」

と調べるうちに、なんと speed cubing なる競技があることを知りました。 ルービックキューブを解く速さを競う競技だそうです。 しかも、5回平均の世界記録はなんと6秒台…!! 一体どうやったらそんなに速く解けるのか興味が湧いてきました。

そこで実際に自分で始めて体感してみることにしました。 入門サイトによると、 なんと誰でも半月〜数ヶ月程度で1分以内に解けるようになるそうです。 何も知らない私にとっては本当なのかと信じられないような気持ちですが、 実際にやってみることで、事の真偽を実証してみたいと思います。

とはいえ、私自身は既に30代で、スポーツとしてみると、 若い人のように成長曲線が急峻とはならないだろうということで、 「 何故、どうやって」といったルービックキューブの知的側面を大事にしながら、 そのパズル性を楽しみつつ、タイムを縮めていきたいと思います。