プロローグ制約ソルバーを使用して特定の問題を解決しようとしていますが、スタックしています:D問題要件のより一般的なバージョンは次のようになります。
:- lib(ic).:- lib(ic).
solve( [A1*X+B1*Y=C1, A2*X+B2*Y=C2] ):-
X::[0..999],
Y::[0..999],
X #\= 0,
Y #\= 0,
A1*X+B1*Y#=C1, % line1
A2*X+B2*Y#=C2. % line2
そして、これは私が使用するクエリ/目標です:
solve( [2*X+3*Y=5, 3*X+2*Y=5] ).
そして、プログラムはXとYの値を計算します(この場合、X = 1、Y = 1が解です)。私が考えているのは、目標/クエリの引数の数が変わる可能性がある場合はどうなるかということです。この場合、私のプロローグプログラムでは、%line1と%line2でコメントされた行の代わりに動的に中断された目標を設定する必要があります。
質問は、どうすればこれらの表現を遅らせることができますか..?問題にこれらをハードコーディングしたくないので、2つの式だけがゴールを通過すると思います。
質問が明確であることを願っています。ありがとう。