【问题标题】:How can I create list of results in prolog?如何在 prolog 中创建结果列表?
【发布时间】:2017-12-09 20:27:57
【问题描述】:

我确实写了一个成本计算器,成本可以是多个相同输入的值,所以我需要找到最低成本。计算器运行正常,但我无法放入列表并找到列表的最小值,我该怎么办? 这是我的计算器,

cal(X,Y,CLIST) :- calcualtor(X,Y,C).
calcualtor(X,Y,C ) :- calculate_cost(X,Z,A), calcualtor(Z,Y,B),C is A+B.
calcualtor(X,Y,C) :-  calculate_cost(X,Y,C).

当我调用cal(A,B,X) 时,它会给出X = 7,然后当我按下“;”时它给X = 5 然后当我按“;”它给了X = 14etc。

我想[7,5,14,..]然后找到列表的最小值。

注意:我不能使用 swi 库函数

【问题讨论】:

  • findall(X,cal(A,B,X),Xs)
  • 哦,谢谢,但是我不能使用这个功能,它被禁止了。
  • 那么我猜你将不得不使用数据库(assert/1retract/1)。
  • I can't use swi-library functions 但你可以自己实现它们:D
  • 在此站点上搜索[prolog] without findall。已经有很多关于各种主题的问题和答案。如果您有兴趣尝试一下,我相信您会找到一些有用的东西。

标签: prolog


【解决方案1】:

为什么需要列表?您正在寻找最小值。也就是说,寻找一个 有另一个更大的值。显式否定 - 称为 \+ - 是强制 Prolog 评估替代绑定的关键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2018-06-12
    相关资源
    最近更新 更多