1
私は、プロローグ(実装 - eclipseプロローグ)で算術式を解決しようとしています。解決しようとする演算式は次のようである:プロローグで演算式の評価を行う方法は?
A * (C + B * X) + D * X = E
Xが計算される値であり、そして他のすべて(A、B、C、D、E)は、すべての数字です。例えば
:5 *(3 + 2 * X)+ 2 * X = 39、プロローグに入力される値2
クエリ(目標)とXを割り当てるべき計算にかかります形式:
?- compute(5*(3+2*X)+2*X = 39, Result).
「結果」と「X」の値は、結びついていなければなりません。 これを行うためにプロローグプログラムを書くにはどうすればいいですか?
ありがとうございます。
スニペットありがとう、私はテストし、それが働いた。私はプロローグでは初めてですが、Xがどのように値を計算しているのか理解できませんでした。 #=は遅延制約だと仮定します。ソリューションがどのように計算されているかについて教えてください。ありがとうございました。 – kallakafar
はい、 '#=/2'は整数制約を表します。 icソルバについては、「ECLiPSeのConstraint Library Manual」のセクション3.1を参照してください。内部で起こっていることは、制約が伝播されたときに制約の伝搬アルゴリズムが開始されることです。これは、一貫性を持たせるために、制約に添付されている変数のドメインを更新します。この場合、これで解決策を得るには十分です。 Marriott/Stuckeyの "Programming with Constraints"はApt/Wallaceの "Constraint Logic Programming with Eclipse"と同様に良い教科書です – twinterer
その方向性もありがとう、本当に助かります!ありがとうございました。 – kallakafar