問題タブ [clpfd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - 可変ドメインを非連続範囲に定義する方法
私は SICStus Prolog から始めています。たとえばStartingTimes
、変数を定義して、リストで定義されたドメインを持たせたいと考えています。[1, 5, 10]
SICStus Prolog でそれを行うにはどうすればよいですか?
私は次のようなことをします:
しかし、それは恐ろしいことです。それを行う簡単な方法があるはずです。たぶんfd_sets
?
注:マニュアルでそれがどのように行われるかを調べようとしましたが、プロローグは一般的な言葉を使用しており、そのためにグーグルを使用するのは本当に難しいです.
debugging - clpfd プログラムをデバッグするには?
SICStus Prolog (clpfd) にプログラムがあり、実行中に何が起こっているのかを知りたいlabeling
です。試してみtrace
ましたが、冗長すぎて実際に何が起こっているのかを理解するのが難しくなっています (どの値がどの変数に割り当てられているか、制約がどのように伝播されているかなど)。
私のプログラムの短縮版:
ヒントをありがとう!
注:「ドメイン地獄」も削除したいのですが、Prolog を理解する限り、1 つの変数 (たとえば Domain_01) を使用することはできません。
prolog - 変数のドメインを clpfd の名前の列挙として設定することは可能ですか?
この方法で変数のドメインを指定できます。
また
しかし、次のように指定したい変数があります:
それは可能ですか?もちろん、名前を整数にエンコードすることは可能ですが、本当に必要なのでしょうか?
prolog - 次のプログラムを短くするには?
以下のプログラムを短くしたいと思います。だけでなく、数十の変数があることをイメージするだけX
ですY
。問題は、各変数のドメインを個別に定義する必要があることです。プログラムが長くなり、透明性が低下するため、好きではありません。
入力:
結果:
最初は、次のように書くだけで解決できると思いました。
しかし、Dom1 が 1 つの値で統一されているため (これは clpfd で何が起こるかを表す適切な用語ですか?)、結果は次のようになるため、機能しません。
ありがとう!
prolog - CLPFDの変数に値を割り当てる方法は?
マニュアルには、バックトラッキングを介して昇順で変数 (X と呼びましょう) に値を割り当てる述語がありindomain/1
ます。
カスタムのラベル付け述語を作成しようとしているときに、変数 X に割り当てられる値の順序を変更したいと考えています。私はこのコードを思いつきました:
しかし、それが正しいかどうかはよくわかりません。また、それが適切な方法であるかどうかもわかりません。
prolog - CLPFD で次のシナリオの変数を定義する方法は?
一連の変数がT_1, T_2, ..., T_N
あり、CLPFD で次の疑似コードを書き直したいと思います。
どうやってやるの?
私はcountを使用します:
しかし、より経験豊富なプログラマーはこのように記述しないと思います。
prolog - Prolog 数独ソルバーの問題
数独 9 x 9 ソルバーを作成しようとしています。私はこの次のコードを使用しました:
ただし、クエリを実行すると:
solve(X,[_,7,2,4,_,_,_,_,1,_,8,_,7,_,_,3,2,_,6,3,1,_,_,_,7,_,_,_,_,_,5,2,_,_,1,4,_,_,5,9,_,4,6,_,_,8,4,_,_,3,7,_,_,_,_,_,9,_,_,_,2,5,3,_,6,8,_,_,5,_,7,_,2,_,_,_,_,9,4,6,_]
)。
プログラムがハングするだけです。誰が私が犯したエラーを見ることができますか? ありがとう。
編集:クエリのエラーに気づきましたが、修正後もプログラムがハングします
prolog - 変数のドメインで値のカスタム順序を指定する方法は?
V
変数があり、 の値がV
range の任意の数値であると仮定しましょう0..5
。ただし、一部の値は他の値よりも優先されるため、ドメインをV
順序付きシーケンスとして指定すると役立ちます。
SICStus Prolog で実行できますか?
例:
マニュアルを読みましたが、役立つものは何も見つかりませんでした。この問題は、カスタム ラベル付け (つまり、V のドメインをリストに変換し、並べ替えて値を に割り当てるV
) で解決できますが、パフォーマンスが低下することが予想されます。