Skip to content

Instantly share code, notes, and snippets.

@bay-puz
Last active December 30, 2021 16:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bay-puz/367c993cc100decad282685e088b4e1d to your computer and use it in GitHub Desktop.
Save bay-puz/367c993cc100decad282685e088b4e1d to your computer and use it in GitHub Desktop.

cspuz をインストールする

cspuzをインストールして、ソルバーとジェネレーターを使えるようにした。やることが多いので手順を残す。 ただし、試行錯誤しながらやったことを振りかえってまとめたので、足りない手順があるかもしれない。

前提

Windows11にvscodeを入れて使っている。

Ubuntu環境を用意する

vscodeでWSLをインストールする。

javaのインストール

javaをインストールする。バージョンはよくわからないので適当に選んだ。 バージョンが表示されるようになれば良い。

sudo apt update
sudo apt install openjdk-11-jre-headless
java -version

minisatのインストール

minisatをインストールする。aptで入るらしいのでそれを使う。 ヘルプが表示されるようになれば良い。

sudo apt install minisat
minisat --help

sugarのインストールと設定

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

cspuzのインストール

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でパズルを自動生成する

cspuz/puzzle/sudoku.pyなどを実行すると問題が自動生成される。 ただし、そのまま実行しても"No module named 'cspuz.generator'"というエラーが出るので、setup.pyの packagescspuz.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

backendをcsugarに変える

csugarのインストール

cmakeが必要なのでインストールする。

sudo apt install cmake

あとはsemiexp/csugarのHow to Buildの通りにすればインストールできる。

backendを変えてcspuzをインストールする

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の入出力ができたりします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment