精确的操作以在SWI-Prolog中获得多个解决方案

时间:2018-10-30 21:09:54

标签: prolog

扩展this问题,为SWI-Prolog提出多种解决方案需要哪些按键操作?

测试代码:

test(10).
test(1).

尝试的互动:

?-test(X). // <- entered query

*按enter会产生以下结果:

?-test(X).
X = 10.

?- // <- typing prompt here, pressing ";" here enters semi-colon character in new line.

根据手册:

  

如果需要其他解决方案,则用户可以键入分号(;)或空格键。如果您不想看到更多答案,请使用返回键。如果用户使用返回键或Prolog知道没有其他答案,则Prolog用句号(。)来完成输出。如果Prolog无法找到(更多)答案,那么它将写为false。

何时应按下这些键(分号/空格),以便程序提供多种解决方案而不是开始新的查询?

1 个答案:

答案 0 :(得分:0)

看到时

X = 10. 

?- 

(带有时间段的 已经出现),这意味着该点是由Prolog自己打印的,表示不再有其他解决方案。此时与查询的交互已经结束,并且等待提示符?-指示的下一个查询。

如果Prolog“认为”那里有 个解决方案,那么您会看到X = 10 _(在0之后带有空格),并且它会等待您的按键,光标_仍在该行上,而不会显示提示。如果当时按了句号,而放弃了您自己的更多解决方案的搜索,则记录会显示

X = 10 .     % notice the space

?-