cspuzをインストールして、ソルバーとジェネレーターを使えるようにした。やることが多いので手順を残す。 ただし、試行錯誤しながらやったことを振りかえってまとめたので、足りない手順があるかもしれない。
Windows11にvscodeを入れて使っている。
vscodeでWSLをインストールする。
javaをインストールする。バージョンはよくわからないので適当に選んだ。 バージョンが表示されるようになれば良い。
sudo apt update
sudo apt install openjdk-11-jre-headless
java -version
minisatをインストールする。apt
で入るらしいのでそれを使う。
ヘルプが表示されるようになれば良い。
sudo apt install minisat
minisat --help
sugarをインストールし、環境変数を設定する。
prog-sugarからsugar-2.3.4.zipをダウンロードし、unzipする。
wget https://gitlab.com/cspsat/prog-sugar/-/raw/master/build/sugar-2.3.4.zip
unzip sugar-2.3.4.zip
vscodeでsugar-2.3.4/bin/sugar
を開き、以下の4行を書き換える。
ただし、/home/bay/sugar-2.3.4
はsugar-2.3.4をダウンロードしたディレクトリを指定する。
my $java = "java";
my $jar = "/home/bay/sugar-2.3.4/bin/sugar-$version.jar"
my $solver0 = "minisat"
my $solver0_inc = "minisat-inc"
sugar
を実行してs SATISFIABLE
という結果がでれば良い。
./sugar-2.3.4/bin/sugar sugar-2.3.4/examples/nqueens-8.csp
semiexp/cspuzをクローンする。
git clone https://github.com/semiexp/cspuz.git
sugar backendでinstallする。
cd cspuz
export CSPUZ_BACKEND_PATH=/home/bay/sugar-2.3.4/bin/sugar
pip install .
Tutorial1を行えれば良い。
cspuz/puzzle/sudoku.pyなどを実行すると問題が自動生成される。
ただし、そのまま実行しても"No module named 'cspuz.generator'"というエラーが出るので、setup.pyの packages
にcspuz.generator
を追加する。
vscodeでsetup.pyを開き、4行目を以下のように書き換える。
setup(name="cspuz", version="0.0.1", packages=["cspuz", "cspuz.backend", "cspuz.puzzle", 'cspuz.generator'])
cspuzをインストールし直す。
export CSPUZ_BACKEND_PATH=/home/bay/sugar-2.3.4/bin/sugar
pip install .
適当なパズルを自動生成する。"generated"のあとに問題が表示されれば良い。
python cspuz/puzzle/akari.py 5 5
cmake
が必要なのでインストールする。
sudo apt install cmake
あとはsemiexp/csugarのHow to Buildの通りにすればインストールできる。
javac
が必要なのでインストールする。バージョンは上でインストールしたjava
と揃える。
sudo apt install openjdk-11-jdk-headless
javac -version
sugar_extension/compile.sh
を実行する。実行権限が足りないので先に付与する。SUGAR_JAR
は上でダウンロードしてunzipしたjarを使う。
chmod +x sugar_extension/compile.sh
export SUGAR_JAR=/home/bay/sugar-2.3.4/bin/sugar-2.3.4.jar
./sugar_extension/compile.sh
環境変数を与えてからcspuzをインストールする。上で一度インストールしているため、アンインストールしてからインストールされる。
export CSPUZ_BACKEND_PATH=/home/bay/semiexp/cspuz/sugar_extension/sugar_ext.sh
export CSPUZ_USE_GRAPH_PRIMITIVE=1
export CSPUZ_DEFAULT_BACKEND=sugar_extended
pip install .
以前と同じようにパズルが自動生成されれば良い。前よりも速くなった気がする。
python cspuz/puzzle/akari.py 5 5
semiexp/cspuzからフォークしたbay-puz/cspuzも、同じようにクローンしてインストールすると自動生成ができます。
だいたい本家と一緒ですが、自動生成できるパズルが増えていたり、non-conやanti-knightが簡単に追加できたり、puzz.linkの入出力ができたりします。