Я пытаюсь решить конкретную проблему с помощью решателей ограничений прологов, и я застрял: 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 ..
Вопрос в том, как сделать эти выражения отложенными ..? Я не хочу жестко кодировать их в проблеме и думаю, что только два выражения будут пропущены через цель.
Надеюсь, вопрос ясен.
Спасибо.