有没有办法在Prolog中创建数学表达式?

有没有办法在Prolog中创建数学表达式?,prolog,Prolog,作为我学习Prolog的另一个附带项目,我想知道是否有办法解决这个问题。我正在尝试制作一个程序,将数字列表作为输入,并在它们之间添加数学运算符,这样数学表达式就有效了。例如:输入:51611输出:5*1+6=11 如果无法添加数学运算符以创建有效的数学表达式,程序将只输出一条消息,如“不可能组合数学运算符”。我感谢所有的答案 operator(S, X, Y, R) :- S == '+', R is X + Y, !. operator(S, X, Y, R) :- S == '-', R i

作为我学习Prolog的另一个附带项目,我想知道是否有办法解决这个问题。我正在尝试制作一个程序,将数字列表作为输入,并在它们之间添加数学运算符,这样数学表达式就有效了。例如:输入:51611输出:5*1+6=11

如果无法添加数学运算符以创建有效的数学表达式,程序将只输出一条消息,如“不可能组合数学运算符”。我感谢所有的答案

operator(S, X, Y, R) :- S == '+', R is X + Y, !.
operator(S, X, Y, R) :- S == '-', R is X - Y, !.
operator(S, X, Y, R) :- S == '*', R is X * Y, !.
operator(S, X, Y, R) :- S == '/', R is X / Y, !.

operation(_, [], R, R) :- !.
operation([], _, R, R) :- !.
operation([O|List], [N1|List2], A, R):- operator(O, A, N1, R2), operation(List, List2, 
R2, R).
要测试它,请执行以下操作:

operation(['+', '*', '-', '/'], [1, 2, 3, 4], 0, R).
答复

R=-0.25


希望这对你有用

是否要为必须解析为给定常量的算术表达式构造表达式树?如果是这样,请看一看:我想您可以为每个表达式定义各种规则,比如
add(a,B,C):-C是a+B。
然后将它们链接在一起,以一次解决输入的两个值。