【发布时间】:2016-04-12 07:51:08
【问题描述】:
您好,我遇到了一个问题。假设我有 3 个操作(+、-、*)。 我想使用这 3 个运算符生成包含给定参数列表的所有可能表达式的变量。
my_problem([1,2],X) 会返回
X=1-2
X=1*2
X=1+2
my_problem([1,2,3],X) 会返回
X=1+2+3 X=1-2-3
X=1+2-3 X=1+2*3
X=1-2+3 ...
等等。
我知道我可以使用这个谓词构建表达式。
args_expr(Arg1,Arg2,Arg1 + Arg2).
args_expr(Arg1,Arg2,Arg1 - Arg2).
args_expr(Arg1,Arg2,Arg1 * Arg2).
有没有什么聪明的方法来生成这个变量?如有任何帮助或建议,我将不胜感激。
【问题讨论】:
-
您所说的所有可能的表达式是指所有使用您给出的每个值的表达式都只给出一次吗?在关联性产生影响的情况下,您是否想要所有可能性(例如,
X=1+2*3、X=(1+2)*3、X=1*2+3、X=1*(2+3)等)?有点不清楚你到底在追求什么。
标签: list prolog operators combinations permutation