首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用获取给定答案的特定值集获取数字方程

使用获取给定答案的特定值集获取数字方程
EN

Stack Overflow用户
提问于 2014-07-29 16:36:14
回答 1查看 256关注 0票数 0

我已经为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,那么我们可以使用它两次) -->必须使用*两次

我不太擅长人工智能,但任何有用的链接也会欢迎提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-09-05 06:44:38

对第一部分的一个相当天真的解决方案如下:假设所有的数字都是有理的。然后,继续对当前的结果集执行允许的操作,直到达到目标。毫无疑问,有许多方法可以改进算法,但这应该是您开始的起点。

下面是一个类似Python的伪代码,用于第一部分的简单解决方案。

代码语言:javascript
运行
复制
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

请注意,目前还不清楚这是否会在每次输入时终止。您能否提供这样一个输入的示例,或者证明它确实终止于所有输入?我们如何改进它呢?

至于第二部分,您还需要维护一组允许的条件以及它们的当前状态。如果没有那么多条件,并且它们遵循简单而相似的模式,那么您可能希望手动执行此操作,但如果条件较多且可能发生更改,则您可能更希望针对每个结果的每个条件维护一组状态机。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25011244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档