【问题标题】:Why `depthfirst2` is always marked as red?为什么 `depthfirst2` 总是被标记为红色?
【发布时间】:2020-12-10 12:11:39
【问题描述】:

得到了以下深度搜索程序,但是 depthsearch 谓词始终标记为红色,因此我无法运行该程序。有什么问题?

node(a).
node(b).
node(c).
node(d).
node(e).
node(f).
node(g).
node(h).
node(i).
node(j).

s(a,b). s(a,c).
s(b,d). s(b,e).
s(c,f). s(c,g).
s(d,h).
s(e,i). s(e,j).
goal(j).
goal(f).

depthfirst2( Node, [Node], _) :-
    goal( Node).

depthfirst2( Node, [Node | Sol], Maxdepth) :-
    Maxdepth > 0,
    s( Node, Node1),
    Max1 is Maxdepth - 1,
    depthfirst2( Node1, Sol, Max1).

【问题讨论】:

  • 这是在 Swish 上吗?它将在同一程序/段中未使用的任何内容标记为已读,因此您实际调用的一个谓词将被“标记为已读”(如“未调用”或“未使用”)我猜这是一个错误/嗖嗖声的特点。据我所知,着色与桌面 IDE 使用的颜色相同,这种着色更有意义。
  • 不清楚正在使用哪个 prolog 以及在哪里看到“红色”。

标签: prolog predicate swi-prolog


【解决方案1】:

您的代码运行正常。 尝试将谓词称为:

?-depthfirst2(a,L,4).

OUTPUT:
L = [a, b, e, j]
L = [a, c, f]
false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-16
    • 2022-06-13
    • 2021-04-15
    • 2016-06-28
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多