0

我是 Prolog 的新手,我正在尝试对图表进行一些操作。

我的实现有一个问题,由于暴露的时间很长很复杂,我会给出一个简单类似的问题。

假设我们有以下图表:

edge(a,e).
edge(e,d).
edge(d,c).
edge(c,b).
edge(b,a).
edge(d,a).
edge(e,c).
edge(f,b).

我想让这个图双向。我使用以下代码:

graph(Graph):-findall(A-B, edge(A,B), L),
    findall(B-A, edge(A,B), L1),
    append(L, L1, Graph).

执行查询时,我得到以下结果:

?- graph(Graph).
Graph = [a-e, b-a, c-b, d-a, d-c, e-c, e-d, f-b, ... - ...|...].

我的问题不在代码中我的问题在结果中,如您所见,我没有得到完整的结果,它总是只给我 8 个边,其余的没有显示。

如何解决这个问题?

4

1 回答 1

0
graph(Graph),writeln(Graph).

writeln/1将整个变量写入输出。

来自@WillemVanOnsem

如果您编写graph(G);true.,则程序将在第一条语句之后暂停。接下来你可以点击W它,它会再次写出答案,但现在是完整的。

于 2017-03-09T16:40:54.083 回答