Я новичок в Prolog.Now Я хочу использовать Prolog для решения задач арифметического выражения. предположим, что у нас есть предикат вроде этого: expr(E,Val,Var,Sol)
первое - это выражение, второе - значение, третье - это переменная, а четвертое - результат. например, если мы спросим: expr(3+x,2,x,S)
ответ будет S=5
, и если мы спросим expr(5*6,3,x,S)
, ответ будет S=30
, в этом случае x не появляется в выражении, поэтому мы просто игнорируем переменную и ее значение. Я хочу знать, как я могу осуществить это, вы, ребята, дайте мне несколько советовиспользовать пролог для решения арифметического выражения
3
A
ответ
1
number_itype(N) :-
functor(N,_,_),
number(N).
expr(V,Val,V,Val).
expr(N, _Val, _Var, N) :-
number_itype(N).
expr(A+B, Val,Var, R) :-
expr(A, Val, Var, RA),
expr(B, Val, Var, RB),
R is RA+RB.
Есть даже чистых способов выразить это. Может быть, кто-то еще хочет внести свой вклад.
Я не совсем понимаю, что вы на самом деле хотите ... Решите уравнения? Или оценить арифметические выражения (с некоторой дополнительной заменой)? – repeat