2

SWI-Prolog方程式を解くプログラムを書きたいです。私は知っGNU Prologています、そしてそれは私を緊張させます...ここで何が悪いのですか?

equation(X1,X2) :-
  {
    2*X1 + 3*X2 =:= 6,
    {X1 is 0; X1 is 1},
    {X2 is 0; X2 is 1}
  }.

X1常にまたはにX2等しい。01

4

1 に答える 1

2

私はファイルを持っています

:- [library(clpq)].
eq(X1, X2) :- {2 * X1 + 3 * X2 =:= 6}.

次に、コンパイルして実行すると、次のようになります。

?- eq(A,B).
{B=2-2 rdiv 3*A}.

それはあなたが期待している結果ですか?

編集

?- eq(A,B),A=1.
A = 1,
B = 4 rdiv 3.

?- eq(A,B),B=1.
A = 3 rdiv 2,
B = 1.

ドキュメントのセクション A.8.3 には、統合によって「外側」の制約仕様を保持できると記載されています。その後、追加の境界を自由に試すことができます。しかし、A と B の両方がバインドされることを強制する場合は、適切な値を選択する必要があります。私の知る限り、最初に投稿した値は方程式を満たすことができません。

于 2013-02-13T18:20:29.843 に答える