cube20のルービックキューブソルバを使う機会があったので使い方を書いておきます。
ダウンロード
方法1.CWEBでインストール
ソースコードのダウンロード
$ cd
$ wget -r -np http://cube20.org/src/
$ cd cube20.org/src/
CWEBのインストール
$ sudo yum install texlive-* (※TeX環境が未インストールの場合のみ)
$ wget ftp://ftp.cs.stanford.edu/pub/cweb/cweb.tar.gz
$ mkdir cweb && tar xzf cweb.tar.gz -C cweb
$ cd cweb
$ make
$ sudo make install
C++へ変換
そのままmake
したいところだが、そうするとエラーが出るので、twophase.w
およびhcoset.w
内のmutex
をmutex1
等に変えたのち
$ make
して、エラーが出なければ成功。
方法2.C++に変換されたものをインストール
ここからダウンロードできる。
Clone or Download -> Download ZIPからダウンロードした後、twophase.cpp
とhcoset.cpp
内のmutex
をmutex1
等に変えて
$ make
して、エラーが出なければ成功。
使い方
基本的には
$ echo "キューブの状態" | ./twophase [option]
で動かす。
キューブの状態を教える
これが面倒だが、キューブの状態をプログラムに教えるため、記号でキューブの一を入れていく必要がある。
例えば、キューブの上面中央に白、前面中央にオレンジ、下面中央に黄色、後面中央に赤、右面中央に緑、左面中央に青のキューブがあるとき、
上面前(白オレンジ)
同じく右(白緑)
同じく後ろ(白赤)
同じく左(白青)下面前(黄色オレンジ)
同じく右(黄色緑)
同じく後ろ(黄色赤)
同じく左(黄色青)手前右(オレンジ緑)
同じく 左(オレンジ青)うしろ右(赤緑)
同じく左(赤青)右上前(白オレンジ緑)
右上後ろ(白緑赤)
左上後ろ(白赤青)
左上前(白青オレンジ)右下前(黄色緑オレンジ)
左下前(黄色オレンジ青)
左下後ろ(黄色青赤)
右下後ろ(黄色赤緑)
の順で、プログラムに状態を教える(例:FU RU BU LU FD RD BD LD RF LF RB LB UFR URB UBL ULF DRF DFL DLB DBR等)
オプション
ここにオプション一覧がある。
実際の使用例
$ cd cube20.org/src
$ echo "FU RU BU LU FD RD BD LD RF LF RB LB UFR URB UBL ULF DRF DFL DLB DBR" | ./twophase -s 20
これはSuperflip状態のキューブを20手以下の探索で打ち切るオプション付きで実行する場合である。これを実行すると
$ This is twophase 1.1, (C) 2010-2012 Tomas Rokicki. All Rights Reserved.
$ Solution 1 len 20 probes 2775964
$ F1B1U2R1U3D1R2B2L2F1U2R3L3U1B2D1R2U1B2U1
$ Verified integrity of phase one pruning data: -1939391245
$ Verified integrity of phase two pruning data: 1084146253
$ Solved 1 sequences in 1.41001 seconds with 2775964 probes.
$ Completed in 1.41005
と表示され、正しくF1B1U2R1U3D1R2B2L2F1U2R3L3U1B2D1R2U1B2U1
通りに動かすとそろえられる。(最初に実行したときは数分かかる)