转载自:https://mp.weixin.qq.com/s/wqbeHvQoafrGdpNBispMEA
给定一个整数列表,找到插入算术符号(运算符)的正确方法,使结果为正确的等式。示例:使用数字列表[2,3,5,7,11],我们可以形成等式2-3+5+7 = 11或2=(3*5+7)/11(以及另外10个) ,解决这个问题的想法来自Roland Beuret。谢谢
程序文件名: p7_04.pl
% equation(L,LT,RT) :- L是数字列表,它们是算术项LT和RT中的叶子-从左到右。对于LT和RT,算术求值得出相同的结果。
equation(L,LT,RT) :-
split(L,LL,RL),% 分解列表L
term(LL,LT), % 构造左项
term(RL,RT), % 构造右项
LT =:= RT. % 求值和比较项
% term(L,T) :- L是数字列表,是从左到右的算术项T-中的叶子。