我已经为人工智能分配做了。需要一个寻找解决方案的逻辑。这是对问题的解释。
我已回答(任何数字,例如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步)......并且
第二步(更难)(此后的下一个任务)是必须设置一些条件,如 - >必须在特定的步骤......或者 - >必须没有两次转发器号码(如果在阵列中这里两次5比我们可以使用它两次) - >必须使用*两次
我不是AI的专家但是也欢迎任何有用的链接 在此先感谢
答案 0 :(得分:1)
第一部分的一个相当天真的解决方案如下:假设你的所有数字都是有理数的。然后继续对当前结果集执行允许的操作,直到达到目标为止。毫无疑问,有许多方法可以改进算法,但这应该可以让你开始。
下面是一个类似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
请注意,目前还不清楚这是否会在每次输入时终止。你能提供这样一个输入的例子,或证明这确实在所有输入上终止了吗?我们怎样才能改善它?
至于第二部分,您还需要维护一组允许的条件及其当前状态。如果没有那么多条件,并且它们遵循简单和类似的模式,那么您可能希望手动执行此操作,但如果它们很多并且可能会发生变化,那么您可能更愿意维护一组状态机每个结果的每个条件。