問題タブ [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.

0 投票する
2 に答える
1235 参照

prolog - fd_domain、方程式が機能しません

多分いくつかの解決策?大丈夫そうです;P特定のエラーが発生しています:

0 投票する
2 に答える
456 参照

prolog - 建物の問題を一覧表示する

私のプログラムでは、リストのリストを作成する必要があります。各サブリストには、XとYの2つの数値と、これら2つの数値の合計と積が含まれています。これまでのところ、私は次のものを持っています:

これは、genList(5,5、Q)のテストケースでは問題なく機能します。ただし、どの開始番号でも機能させるのに問題があります。

目標は、sum <= 100の数値のすべてのペアを見つけることです。したがって、1つの開始値について上記を実行すると、Xはすべてのペア1 <X <Y(sum <= 100)を検出し、すべての数値2でそれを実行します。 -Nは、可能なペアの完全なリストを提供します。

興味のある人のために、私が取り組んでいる問題は、ここで説明されている合計/積の問題です(ページの2番目)

誰かがこれを手伝ってくれるなら、それは大いにありがたいです!

また、組み込みのプロローグ述語は使用できないため、findallを使用するのではなく、これを行う複雑な方法です。

この述語によって生成された出力の小さな抜粋は次のとおりです。

[[5,6,11,30]、[5,7,12,35]、[5,8,13,40]、[5,9,14,45]、[5,10,15,50] 、[5,11,16,55]、[5,12,17,60]、[5,13,​​18,65]、[5,14,19,70]、[5,15,20,75] 、[5,16,21,80]、[5,17,22,85]、[5,18,23,90]、[5,19,24,95]、[5,20,25,100]、[ 5,21,26,105]、[5,22,27,110]、..。

編集:

さて、編集した後、これが私のコードの最新バージョンです。

非常に近いと思いますが、まだまだ正しくないことがあります。

番号のペアを循環しますが、「;」を使用する必要があります すべての答えを表示するために、それは私が望んでいることではありません。さらに、すべての回答が尽きた後、falseを返します。私はそれを理解することができません。

また、途中で完全な答えが得られますが、最後のペアのセットだけが残るまで、毎回サブリストが削除されます。

例:genList(0,48,48、Q)。私に与える:

ご覧のとおり、サブリストは毎回削除されますが、理由がわかりません。

0 投票する
2 に答える
334 参照

prolog - in_set/2 制約の使用

Xリスト内の値にならないように制約を使用しようとしています。

SICStus Prolog マニュアルから:

ただし、リストを FDSet に変換する方法がわかりません。整数のリストがあり[2,3,8,9]、変数のドメインをそのリストに含まれないように制限したいと考えてXいます。それ、どうやったら出来るの?ありがとう。

0 投票する
1 に答える
832 参照

prolog - 行から数独の「ボックス」を生成する-プロローグ

入力数独ボードが現在正しくないかどうかをチェックするだけの簡単なプログラムを書こうとしています。つまり、行、列、または「ボックス」に同じ番号が2つあります。行と列の部分で問題が発生したことはありません。これは、次のコードで実行する非常に単純なタスクです(「0」は、入力されていない正方形を表すことに注意してください)。

ただし、KxKの「ボックス」(Kは行の長さの平方根)を表すリストを生成する方法については、あまり明確ではありません。Kの値を取得し、row1をK個のサブリストに分割し、row(K * K)に到達するまで、row2のK個のサブリストをrow1のサブリストの最後に追加します。

残念ながら、これを実現する方法が本当にわかりませんか?リストを取得し、それぞれの長さがYのXリストに分割するという方針に沿って何かを実行するために使用できるBIPはありますか?

そうでなければ、何かアイデアはありますか?私は小さなループについて知っています、そしてそれらはここで実装できると思います、しかし私はそれをどのように行うのか本当にわかりませんか?助けてくれてありがとう!

0 投票する
2 に答える
218 参照

prolog - メガ ランタイムの問題 (ブルート フォース アプローチ)、プロローグ

事実からスケジュールを作成しようとしています。事実は course_meetings(subject,type,group,description) の形式です。

ブルートフォースアプローチを使用することにしました

考えられるすべてのスケジュールを生成し、どれがすべての制約を通過するかを確認しますが、2.6 を生成した事実、それを最適化するにはどうすればよいですか、より良いアプローチはありますか。例のために。course_meetings (件名、タイプ、グループ、講師、説明)。解決する:-

この形式の 32 の事実があり、順列の場合は 32!~= 2.6*10^32

0 投票する
2 に答える
394 参照

java - 有限領域ソルバー fd_minimize/2

Prolog で述語を最小化する必要があります。現在、GNU Prolog Java を使用しています。私はこの事実を得た

指定されたテリトリーには X 軍がいると表示されます。ここで、特定のプレイヤーが所有する軍隊の最小数を見つけたいと考えています。だから私は書いています:

通訳者は次のように言います。

java.lang.IllegalArgumentException: 目標は現在アクティブではありません

http://www.gprolog.org/manual/gprolog.html#htoc313問題 は、インタープリターの Java 実装に FD ソルバーがないことだと思います。ヒント/回避策はありますか?

0 投票する
2 に答える
457 参照

prolog - 各セットの合計がXであるセットのリストを取得します

セットのリストを生成する方法を理解しようとしています。各セットの長さはNで、各セットの合計はXです。

私はこのコードを見つけました:

そして、それを使用して、合計Xのセットのリストを取得できます。

問題は、それらがすべて順列であり、私が組み合わせを探しているということです。私が探している出力は次のようになりますget_combos(Sum,Length,List)

ポインタはありますか?

0 投票する
1 に答える
1406 参照

prolog - PROLOG述語順序

私はPROLOGを使って解こうとしている方程式をたくさん持っています。しかし、私はマイナーなクロッパーになりました。それらは有用な順序で指定されていません。つまり、多くの変数ではないにしても、定義される前にいくつかの変数が使用されます。これらはすべて同じ述語内で指定されます。PROLOGはランダムな順序で指定されている述語に対処できますか?

0 投票する
2 に答える
391 参照

lambda - エンドビューパズル、プロローグ

CLPFD を使用して End View Puzzles のソルバーを作成しようとしています (なじみのない人のために、ここに簡単な説明があります http://www.funwithpuzzles.com/2009/12/abcd-end-view-a1.html ) . 各行/列に適用する制約に取り組んでおり、問題が発生しています。

だから私はそれが次のように見えるべきだと思っています:

したがって、最初の 3 つの手順は非常に簡単です。ボードを初期化し、ドメインを設定し、この行が (述語0を書きました)以外の数字を繰り返さないことを確認します。stop_repeats/2私が直面している問題は、left_value/3述語の処理です。リストのほとんどは制約されておらず、この最初の正の要素の位置が実際にはわからないため、ここでどのように進めればよいかよくわかりません。どんな助けでも大歓迎です!

0 投票する
6 に答える
3852 参照

performance - Prolog での口頭演算の高速な実装

私はすでに Prolog で動作する一般化された口頭算術ソルバーを作成しましたが、遅すぎます。SEND + MORE = MONE Y という単純な式を実行するだけで 8 分かかります。