gpt4 book ai didi

prolog - Prolog中求和的解决方案

转载 作者:行者123 更新时间:2023-12-02 06:47:17 27 4
gpt4 key购买 nike

我绝对是 prolog 的初学者。我刚刚阅读了一个基本教程,并试图自己解决一个快速问题。问题是,找到可能导致总和的数字组合。我期待这样的事情:

sum(A,B,11).

这应该会导致 A 和 B 的值相加为 10。

我的初始代码是这样的:

sum(A,B,C):-
C is A + B.

但是我没有得到任何结果。我得到以下信息。

ERROR: Arguments are not sufficiently instantiated
ERROR: In:
ERROR: [9] 11 is _3302+_3304
ERROR: [7] <user>
ERROR:
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

我对 Prolog 的理解缺少什么?

最佳答案

标准的 is/2 谓词要求第二个参数有一个可计算的算术表达式。因此,在您的情况下,您需要为 AB 生成可能的值,以便可以计算 A + B。为了使其实用,您需要限制可能值的范围。例如:

?- between(1,7,A), between(1,7,B), sum(A,B,11).
A = 4,
B = 7 ;
A = 5,
B = 6 ;
A = 6,
B = 5 ;
A = 7,
B = 4 ;
false.

随着您对 Prolog 的学习取得进展,您最终可能会对学习约束求解器感兴趣。

关于prolog - Prolog中求和的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483768/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com