【发布时间】:2015-03-30 04:37:21
【问题描述】:
我有这个谓词,如果 S 等于某个等式,例如 K + 2N + 3L = S,则返回 true。 对于 K、N,我们拥有的钱分别是 1、5 和 10, L.
我不想使用 :- use_module(library(clpfd)),我想在没有它的情况下解决这个问题。
我的直觉是将其分解为子问题,例如编写函数breakMoney1(S,K) :- K is S。并通过添加一个参数创建更多助手但是当我比较时,我正在努力解决获取未实例化变量的问题。
breakMoney(S,K,N,L) :-
【问题讨论】:
-
在比较之前使用
between/3实例化它们。 -
Prolog 没有函数。它有谓词。他们不是一回事。 function 是命令式的(“做某事”)。 谓词表示关系或规则。不幸的是,您希望避免使用 CLPFD,因为它是纯 Prolog 表达数值表达式之间的 关系 的方式。对于你的问题,你说你的代码有这样那样的问题,但你没有显示你的代码。也许您可以展示您的尝试。
标签: prolog