問題タブ [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 に答える
14483 参照

floating-point - プロローグで float を integer に変換する

プロローグで浮動小数点数を整数に変換するには?

私は試した:

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

prolog - prolog, test(X, Y, Z) :- Y は X + Z です

Xしか知らないのに、プロローグでYとZを取得するにはどうすればよいですか?

例えば:

しかし、エラー:

0 投票する
3 に答える
1721 参照

prolog - プロローグで複数のルールを定義する最短の方法

私はプロローグにもっと慣れるために練習問題を解こうとしています。

タスクは次のとおりです。

私はその演習を解決しましたが、ややかさばると思います。私のコードは次のとおりです。

誰かがそれらのルールを初期化するためのより良い方法を提案できますか?たとえば、Haskellでは次のようなことができます。

前もって感謝します。

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

algorithm - テニスの試合予定

限られた数のプレーヤーと限られた数のテニスコートがあります。各ラウンドでは、最大でコート数と同じ数の試合を行うことができます。休憩なしで 2 ラウンドをプレイする人はいません。全員が他の全員と対戦します。ラウンド数ができるだけ少ないスケジュールを作成します。(全員のラウンド間に休憩が必要であるという規則のため、試合のないラウンドが存在する可能性があります。) 5 人のプレーヤーと 2 つのコートの出力は次のようになります。

この出力では、列と行はプレイヤー番号であり、行列内の数字はこれら 2 人のプレイヤーが競うラウンド数です。

問題は、実行可能な時間でより大きなインスタンスに対してこれを実行できるアルゴリズムを見つけることです。これを Prolog で行うように依頼されましたが、どの言語の (疑似) コードでも役に立ちます。

私の最初の試行は貪欲なアルゴリズムでしたが、それではラウンド数が多すぎる結果が得られました。次に、友人が実装した反復的な深さ優先探索を提案しましたが、それでも 7 人のプレイヤーという小さなインスタンスでは時間がかかりすぎました。

(これは古い試験問題からのものです。私が話した誰も解決策を持っていませんでした。)

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

prolog - Prolog の暗号ソルバー

次のような暗号文を解く必要があります。

変数の長さが異なる場合があります。また、繰り返しは異なる場合があります (0.XYZXYZ... など)。うまくいくと思ったコードを書きましたが、うまくいきません:

crypt([A,B,C], [D,E,F], [G,H])として実行します。少なくとも ABC / DEF = GH を解決して、ソリューションの一部を機能させるだけだと思っていましたが、うまくいきません。

1つの入力例でも、どうすればいいのかわかりません。0.GHGHGH の表現方法がわかりません....

編集: mn/2 は、数字のリストを数値に変換するためのものです ([1,2,3] -> 123)。

0 投票する
3 に答える
3350 参照

prolog - Prolog Noob:SWIの制約プログラミングライブラリまたは構文の問題-Prolog

私はSWI-Prologで制約プログラミングを理解しようとしています。このチュートリアルを見てください:http://en.wikibooks.org/wiki/Prolog/Constraint_Logic_Programming

しかし、私は最初のハードルに落ちているようです。

ここで何が問題になっていますか?ライブラリを含めたようですが、チュートリアルの最初の例の行で構文エラーがスローされます。

私が見つけることができるすべてのチュートリアルは、#=、#<などの演算子を使用しているようです。しかし、私のSWI-Prologはそれらを嘲笑します。それらは、その制約ライブラリに付属する追加の構文ですか?(そして私はそれをロードするのに失敗していますか?)

または、チュートリアルの例を読み間違えていますか?

更新:以下のHorshの返信から物事を理解しようとしています。ライブラリを使用してインタラクティブターミナルで回線を実行すると、これを機能させることができます。しかし、ライブラリをインポートしてこれらの演算子をソースファイルで使用しようとすると、エラーが再度スローされます。何がわからないの?

アップデート2:

わかった。ソースファイルでライブラリを呼び出してから、#>を含むルールを記述した場合。次に、コマンドラインから参照してみます。エラーがスローされ、#>構文が認識されません。プログラムを参照する前にライブラリをコマンドラインにインポートすると、機能します。これは正しいでしょうか?

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

prolog - うまく述語を書く方法(間ではない)

次のコードを書きます

うまく機能しますが、効率的ではないと思います

どうもありがとう :)

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

prolog - Prolog覆面算パズル

私はPrologを使用して覆面算パズルを解くように頼まれました:

上記はパズルです。どこに問題があるのか​​わかりません。結果は常にfalseを返します。さらに、SWI-Prologでライブラリを使用することは許可されていません。

サンプルクエリ:

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

list - プロローグ リストのリスト ドメインとラベリング

L=[[X,Y,Z],[1,A,B],[2,C,D]], L ins 1..3, all_different(L), label(L).

リストのリスト内の変数に値を入力したいだけです。リストの要素 (リスト) をより簡単な方法で取得する解決策はありますget_element_at(L,1)か?