【问题标题】:Prolog appending listProlog附加列表
【发布时间】:2011-10-22 08:45:45
【问题描述】:

我在添加列表时遇到问题。

find_paths(Start, Finish) :- path(Start, Finish, [Start], Path), 
                             append([Path], List, Result), 
                             fail.

路径是一个列表。

我会得到 n 条失败路径, 但是如果我输入 write(Result),它会打印这个 [[...], H234] n 次。

如何告诉 prolog 使用上一次迭代的结果并将其追加到一起 每一次失败都有一条新的道路?

【问题讨论】:

  • 请添加一些关于你得到什么和你想要什么的信息
  • nvm 。我想我明白了。我使用 setoff,所以它将所有解决方案作为列表返回。

标签: prolog


【解决方案1】:

变量 List 是免费的,所以不出所料,将路径 ([...]) 附加到变量 (H234) 的结果会被打印出来。改进代码的最简单方法是

find_paths(Start, Finish, List) :- 
       findall(Path, path(Start, Finish, [Start], Path), List).

或者,您可以更改 path/4 的定义以累积结果。

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 2015-04-23
    • 1970-01-01
    • 2018-04-25
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多