カーブデータコンバータ
#パズル #ブラウザアプリ
https://gyazo.com/6cfde8c8bea2192c8f82f1f105f9cbf6
https://wandsbox125.web.app/puzzle-tools/pzv2sugar/
概要
puzz.linkにて提供されているカーブデータの問題をSugarスクリプトの制約に変換するWebアプリケーションです。
得られた解を画像として表示する機能や、得られた解を除外するスクリプトの生成機能も備えています。
黒マス対応済。境界、?記号は現在未対応です。
唯一解チェックチュートリアル
コマンドライン部分はMac環境での操作について記載しています。
その他環境の場合、適宜変換して読み進めてください。
前準備としてローカル環境にSugar、およびSATソルバを導入します
導入の仕方については、Sugar公式サイト等を参照できます。
盤面の作成
puzz.linkのカーブデータエディタ(外部サービス)を用いて盤面を作成します
https://gyazo.com/eb78355880cc042476311a7dabb37c8c
ヘッダメニューよりファイル→URL出力を選択し、ぱずぷれv3のURLを出力し、このURLをコピーします。
https://gyazo.com/2fb5e89dfadf7d7387497552ad3233e5
CurveData Converterを開き、puzzlink Importの欄にURLをペーストし、Goボタンをクリックします。
https://gyazo.com/bf6a5f420d897fc6fcbf396ae1b350af
下のテキストボックスに
表出グラフJSON
Sugarスクリプト
が出力されます。(盤面が広く、表出が多い場合は時間がかかる場合があります)
表出グラフJSONはカーブデータの表出を点と線の繋がりに変換したもので、ソルバ開発時のテスト等にご利用できます。
Sugarスクリプトをコピーして、適当なファイル名をつけて保存します。
code: sh
% pbpaste > curve.csp
保存したファイルをSugarで実行し、実行結果をクリップボードにコピーします。
code: sh
% sugar curve.csp | pbcopy
再びCurveData Converterに戻り、▼Sugar実行結果をペーストと書かれている下のテキストボックスに出力結果をペーストし、テキストボックスの下のGoボタンをクリックします。
https://gyazo.com/db762fc72ad05a3d6e8168adbb08b176
解の一つが表示されます。
唯一解かどうかをチェックするには、
さきほどのファイルの末尾に解を除外するスクリプトを追記します。
code: sh
% pbpaste >> curve.csp
再度実行すると、別解があれば表示されます。UNSATISFIABLEと表示されたらこの盤面は唯一解となっていることがわかります。
code: sh
% sugar curve.csp
s UNSATISFIABLE
既知の問題
境界線、?記号には未対応です。
リリース情報
19/09/04 リリース
ライセンス情報
sabo2様よりMITライセンスにて提供されているpzpr.jsを、robx様によって派生させたpzprjsをライブラリとして利用しています。
Sugarは神戸大学 田村先生によって開発された SATに変換し、SATソルバを用いて解くタイプの制約ソルバーです。
Sugar: a SAT-based Constraint Solver
検証用のSATソルバとしてMinisatを利用しています。
カーブデータをSugar制約スクリプトの形で記述する方法に関しては、まいなすよん様の下記の記事を参考にしました。
カーブデータが好きだ。あるいはカーブデータをSugar制約ソルバーで解く - まいなすよんな日々
免責
免責の項目を参照
連絡先
連絡先
お気付きの点等はこちらまでご連絡ください
Twitter: @wand_125
Mail: wand1250@gmail.com