Как сделать оценку арифметического выражения в прологе? - PullRequest
1 голос
/ 09 февраля 2012

Я пытаюсь решить арифметическое выражение в прологе (реализация - eclipse prolog).Арифметическое выражение, которое должно быть решено, выглядит следующим образом:

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' должны быть связаны (назначены) вместе.Как мне написать программу пролога для этого ..?

Спасибо.

1 Ответ

4 голосов
/ 09 февраля 2012

Я предполагаю, что вы используете fd, а не ic.Это немного упрощает вещи.

:-lib(fd).

Если предположить, что у вас есть только уравнения, а не неравенства, и только одна переменная X, то вы можете сделать это в два этапа:

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

Сначала извлеките переменную из левой части, затем опубликуйте ограничение, которое вычисляет уравнение.Если уравнение верно, это создаст экземпляр вашей переменной.

Редактировать

С библиотекой ic используйте eval(L)#=R.

...