1

私はプロローグで算術式を解こうとしています(実装-Eclipseプロローグ)。解く算術式は次のようになります。

A * (C + B * X) + D * X = E

Xは計算される値であり、他のすべて(A、B、C、D、E)はすべて数値です。

例:5 *(3 + 2 * X)+ 2 * X = 39、コンピューティングでは、Xに値2を割り当てる必要があります。

Prologに入力されるクエリ(目標)は、次の形式を取ります。

?- compute( 5*(3+2*X)+2*X = 39, Result).

「結果」と「X」の値は、一緒に結び付ける(割り当てる)必要があります。これを行うためのプロローグプログラムを作成するにはどうすればよいですか..?

ありがとうございました。

4

1 に答える 1

4

fdを使用するのではなく、を使用することを前提としていますic。それは物事を少し単純化します。

:-lib(fd).

さらに、方程式のみがあり、不等式はなく、変数Xが1つしかない場合、2つのステップでそれを行うことができます。

compute(L=R, X) :-
  term_variables(L, [X]),
  L #= R.

まず、左側から変数を抽出してから、方程式を計算する制約を投稿します。方程式が有効な場合、これにより変数がインスタンス化されます。

編集

icライブラリでは、を使用しますeval(L)#=R

于 2012-02-09T10:38:02.863 に答える