我已经为AI任务做了这件事。需要一个寻找解决方案的逻辑..Here是对问题的解释。
我有答案(任何数字,例如10 )。并且有一组数字(例如1,2,3,4,5,6,8,9)。现在我必须使用(+,-,*,/)和数字创建方程来得到答案10。
这是第一步(不是固定长度或重复数字的条件)..对此有许多解决方案,如
5+5= 10 (2步)2*2= 10 (2步)
2*2+6= 10 (3步)3*2+4= 10 (3步) ...and开
在第二步(更难)(这之后的下一个赋值)必须设置一些条件,如-->必须在特定步骤中...Or -->不能重复两次(如果在这里的数组中两次乘以5,那么我们可以使用它两次) -->必须使用*两次
我不太擅长人工智能,但任何有用的链接也会欢迎提前感谢
发布于 2014-09-05 06:44:38
对第一部分的一个相当天真的解决方案如下:假设所有的数字都是有理的。然后,继续对当前的结果集执行允许的操作,直到达到目标。毫无疑问,有许多方法可以改进算法,但这应该是您开始的起点。
下面是一个类似Python的伪代码,用于第一部分的简单解决方案。
def solve(numbers, target, binary_operators):
obtainable_results = set(numbers)
if target in obtainable_results:
return True
while True:
prev_len = len(obtainable_results)
for a in obtainable_results:
for b in obtainable_results:
for op in binary_operators:
c = op(a, b)
if c == target:
return True
obtainable_results.insert(c)
if prev_len == len(obtainable_results):
return False
请注意,目前还不清楚这是否会在每次输入时终止。您能否提供这样一个输入的示例,或者证明它确实终止于所有输入?我们如何改进它呢?
至于第二部分,您还需要维护一组允许的条件以及它们的当前状态。如果没有那么多条件,并且它们遵循简单而相似的模式,那么您可能希望手动执行此操作,但如果条件较多且可能发生更改,则您可能更希望针对每个结果的每个条件维护一组状态机。
https://stackoverflow.com/questions/25011244
复制相似问题