簡易CFOP法

スピードキューブ

おれは今、ルービックキューブにハマっている。

正確には、ルービックキューブというのは道具そのものを指し、 ばらばらに崩した(スクランブルという)キューブを解く(ソルブするという)タイムを競う競技を 「スピードキューブ」という。 そして、スピードキューブの競技者をスピードキューバーという。 おれは入門スピードキューバーというわけだ。

スピードキューブの世界はヤバい世界で、 真の世界トップは4秒くらいで解く。

ルービックキューブが4秒で解けたところではっきり言って何も意味もなく、 競技プログラミングよりも意味がないのだが、 やってみると夢中になる。 つべこべ言わずにソルブしろ。

ルービックキューブの解法

ルービックキューブの解法はいくつか確立されている。 解法は、手数の短さやエルゴノミクスを基準に洗練されてきた。

ルービックキューブを解くというのは、 パターンマッチングとそれに対するアルゴリズム(手順)の実行の繰り返しである。 つまり、キューブの状態がこういう状態の時にはこのようにするとこういう形になる というアルゴリズムが確立されていて、あとはそれをいかに素早く行うかという 勝負の世界になる。

学習者にとっては、暗記要素が強く、それが一通り終わると、 勝負は認識の速さと手の速さに帰着する。 手の速さは、トップレベルでは一秒あたり10回以上回転させる速さになる。 彼らは考える間もなく、条件反射的にソルブするソルブマシーンなのだ。 上級スピードキューバーにとって、この競技はフィジカルスポーツに見えるらしい。 (By スピードキューブトレーナーShuhei)

もっとも簡単な解法

ルービックキューブの解法は、基本的には記憶の量と手数の少なさがトレードオフの関係にある。

もっとも簡単な解法であれば、1つの動画を見れば、解けるようになるし、というかおれは解けるようになった。 DaiGoの弟も1時間で解けるようになったようだ。

日本語ならば以下の動画が、セクシームーブという手順だけで解く方法を紹介している。

この解法では、まず、デイジークロスという手法を使い白クロスを作り、次に完全一面を作り、 下二層を作り、あとは冗長なアルゴリズムでよちよちと最後の一層を揃えて終わりというものである。 名前をつけるならば、簡易LBL法だろうか。

しかしこの方法はあまりにも遅く、1分を切ることは不可能だろうし、 仮に手を速くしてこの方法で1分を切ったところで将来性がなく、1回解けたらそれ以上はやらなくてよい。

CFOP解法

現在、競技者の間で主流の解法は、CFOP法という。これは、

  • Cross: 白クロスを作る
  • F2L: 下二層を作る
  • OLL: 上面に黄色一面を作る
  • PLL: 上層のサイドを揃える

の頭文字からつけられた名前である。

CFOPは、この4つの段階に解法を分解することで、 その中で独立にタイムを改善していくことを可能にする。

4Look Last Layer

このうち、OLLとPLLはそれぞれ、最善の方法では1回のアルゴリズムで解くことが出来る。 これらはFull OLL, Full PLLと呼ばれており、それぞれ57パターン、21パターンの解法が存在する。

これらを一気に覚えるのはかなり難しく、苦痛となる。 そのため、OLLとPLLには簡易解法が存在する。これを4Look Last Layerという。

この解法では、OLLは2Look OLL、PLLは2Look PLLという解法を採用する。 名前からわかるとおり、最善では1回のアルゴリズムで解くものを、問題を2つに分割することによって トータルではより少ないパターンで解くというものである。 具体的には、2Look OLLは3+7、2Look PLLは2+4に削減出来る。 しかも、対称性なども考慮すると覚える量は実際にはさらに少なくなる。

この解法は、上位競技者には使われないものの、 記憶量が少ないわりにそれなりのタイムまで伸ばすことが出来、 また簡易CFOPで学んだことは最善のCFOPを学ぶ上でも役に立つため、 ビギナーズCFOPなどとも呼ばれ、とりあえず解けるようになったキューバーの次の道標となっている。

おれの次の目標は簡易CFOPで安定して1分を切ることだ。

超簡易OLL/PLLはよくない

OLLにもPLLにも、たった1つのアルゴリズムを繰り返すだけで解くという解法が存在するが、 この解法は使わないことにした。 なぜかというと、簡易CFOPを経由する目的というのは、最善のCFOPを学ぶ上の基礎を学ぶことであり、 そのためには、例えばMダブルトリガーを避けたりとか、そういう経験は時間の無駄だからだ。

あくまでも簡易CFOPを足がかりにして、よくある or 簡単なパターンから少しずつFull-OLL/PLLを学んでいくことが目的であり、 数学的に美しく解くことは目的ではない。 以下の動画でも、OLLの超簡易解法は時間の無駄だとしている。 スピードキューブのゴールは早く解くことであり、そのためには手数を少なくすることは避けて通れないのだ。

学習者の段階では、解けるようになってしまったらそれ以上はやる意味はなく、 新しいパターンを学んでどんどん知識を増やしていくというのが学習戦略として正しいだろう。 当然この方が、飽きずに続けることも出来る。 この意味でも、最初から覚えるアルゴリズムを少なくするのは、すぐにピークが来てしまうため間違っている。

簡易CFOPのアルゴリズム

というわけで、OLLもPLLも2Lookで解ける真の簡易CFOPを習得することにして、 そのためにまずアルゴリズムを調査することにした。 同じAパームをするにしてもより覚えやすく、動きが自然なアルゴリズムを選んで学ぶ方がよいと考えた。

手数が少ないことも重要な要件ではあるが、これは今の段階では無視した。なぜかというと、 手数が長くても、動きが自然であれば高速に実行出来るだろうし、あとになって別のアルゴリズムを学ぶことも出来るからだ。 今はとりあえず、覚えやすいアルゴリズムを選択し、それに習熟することにした。

以下では、自分が採用したアルゴリズムや、参考になった動画を紹介する。

記法

回転記号は通常のものを使ったが、 さらに圧縮記法として、

  • Tr: トリガー RUR'
  • Tr2: トリガー2 RU2R'
  • Sn: スネイク R’FR
  • Sn2: スネーク2 R’FR2
  • Ja: ジャックナイフ RU’R'

を追加で用いている。 これはぼうたろう氏による圧縮法であり、 典型的な動きとしてまとめで覚えることによって

  • その部分は高速に動かせる
  • 規則が見えやすくなる
  • 短くなるので覚えやすくなる

効果がある。

また、{}で囲った部分は実質的に記憶する必要がないレベルに自明なもの。 単にU面を回してAUFするだけとか。

白クロス

白クロスを作るもっとも初歩の方法はデイジークロスと呼ばれるものであるが、これは遅い。 白クロスはOLLやPLLのように明確なアルゴリズムがないため、上級者にとってもタイム短縮の悩みとなる。 であれば、今のうちから正統な下クロスを実践していき、経験を積んでいく方が将来性があると判断した。

下クロスを作る方法は、中心のブロックを無視して、エッジの位置関係を淡々と揃えてあとでD面を回転させる というコツが、以下の動画で語られている。

F2L

F2Lにも効率的なアルゴリズムが存在するが、いずれの場合もポイントは、「ペアとなるエッジピースを探して、IT化する」 ということである。

今回はビギナー向けF2Lアルゴリズムという冗長なアルゴリズムを採用するが、 これは、エッセンスを十分に含んでおり、トレーニング自体が将来にとって無駄になることがないためである。 また、OLL/PLLと同様に、苦手な形に対して手筋を学び、部分的に高速化して期待値を伸ばしていくという戦略もとれるため、 足がかりとしては悪くない。

ビギナー向けF2Lは以下の動画を見れば6分でわかる。

OLL (2Look)

OLL1 (黄色十字)

OLL1では3つのパターンが出るが、覚えることはほぼない。 実質的に1つだけ覚えればよい。

  • Line: F(Tr-U')F'
  • 3時半: f(Tr-U')f'
    • Fをfにしただけ。短針と長針を一緒に回転させるイメージを持つ
  • Dot: F(Tr-U')F’すると3時半になる

OLL2 (黄色上面)

OLL2では様々なパターンがあり、人によってどの向きで解くか流派がある。 さまざまな手法を比較検討して、以下の方法で解くのが良いと結論づけた。

  • Sune: (Tr)U(Tr2)
    • Uは右手の薬指で引く
  • Anti-Sune: (Tr2)U'(Ja)
    • Suneの逆
    • (Tr2)' = 同
    • (Tr)' = Ja
  • H: F (Tr-U’)3 F’
    • 少し長いが、セクシー自体が速いのでそこまで遅くはないはず
  • Pi: (R-U2)(R2-U’-R2-U’-R2){U2-R}
    • 最初にRをひねって上面にLを作る
  • T: (tr-U')(sn)F'
    • 右トリガーからスレッジハンマーのワイド版
  • L: F'(tr-U')(sn)
    • 跳ね上げから始まることに注意
    • 右手前の黄色を左手前に持ってきてTに帰着させると理解すれば覚えられる
  • 鬼: (R2D’)R(U2R’D){RU2R}
    • 参考動画
    • 動画にあるとおり、コーナーピースの移動に着目すると覚えやすい
    • 最後の方は自明

PLL (2Look)

PLL1 (Corner)

PLL1では、Aaパームを使う方法もあると思うが、Tパームを採用する。 YとTは手順を入れ替えただけなので記憶しやすい。 YとTが双子というのはこの動画で説明されている。

  • ヘッドライト左側(Tパーム): (Tr-U' Sn-F')(F Ja-U' Tr-F')
    • (Tr-U' Sn-F')は右トリガー+スレッジハンマーの組み合わせで、OLLにも似たような形がある
    • 2つのOLL(下二層は破壊しない)を組み合わせることが原理。参考動画
    • 真ん中のF’Fはキャンセル可能
  • ヘッドライトなし(Yパーム): (F Ja-U' Tr-F')(Tr-U' Sn-F')
    • Tパームの前後を入れ替えただけ

PLL2 (Edge)

PLL2は、Ua,Ub,H,Zを実行するだけだが、アルゴリズムはふつうでないものを採用することにした。

  • Ua: (M2-U)(M-U2-M’)(U-M2)
    • Mは指ではなくr’Rで入れるのが安定する
  • Ub: (M2-U’)(M-U2-M’)(U’-M2)
    • Uaの逆
    • (MU2M')' = (同)
    • UaのUをU’で置き換えただけ
  • H: (M2-U)(M2-U2)(M2-U){M2}
    • 21 22 21 2
  • Z: (M'2-U)(M'2-U)M'(U2 M'2){…}
    • 21 21 1 22 … と覚える
    • 最後のを繰り返していくとどっかでAUFします
    • 参考動画

今後の展望

おれはOLLに関しては最後まで覚える予定はない。 費用対効果が悪いからだ。

OLLは57パターンもある上、 もともと2Lookでもそこまで遅いわけではない。 というのも、OLL1パターンが少なくパターンマッチングのオーバーヘッドが小さい上に、 手数も少ないからだ。 このために57パターン覚えても、PLLの記憶の邪魔になるのがオチだろう。

むしろまずはCrossとF2Lにもっとも力を割くべきだと思っている。 これは主に練習効率の観点である。 まず、これは最初の方のフェイズなので練習効率も良く、 また、F2Lまでが早くなればそれ以降の練習効率も上がるからである。 CrossとF2Lが早くなったら、新しいPLLを覚えればよいだろう。

直近の目標は1分切りだが、次は30秒、究極的には15秒までは行きたいと思っている。