SWI-Prolog - 显示长名单

Tam*_*arG 20 prolog swi-prolog prolog-toplevel

我正在使用SWI-Prolog并且我正在尝试打印列表,但如果列表中有超过9个项目 - 它看起来像那样 -

[1, 15, 8, 22, 5, 19, 12, 25, 3|...] 
Run Code Online (Sandbox Code Playgroud)

有没有办法显示整个列表?

phi*_*ous 24

请查看:http://www.swi-prolog.org/FAQ/AllOutput.html

简单的解决方案是在给出答案后键入w,即:

?- n_queens_problem(10,X).
X = [1, 3, 6, 8, 10, 5, 9, 2, 4|...] [write]
X = [1, 3, 6, 8, 10, 5, 9, 2, 4, 7] 
Run Code Online (Sandbox Code Playgroud)

按下"w"键后,最后显示"[write]",完整的解决方案出现在下一行.

  • 如果prolog只返回一个答案,这不起作用. (6认同)
  • 如果查询确定性成功,您可以简单地写:`? - solution(S); 是的,即简单地追加`; 真实`引入一个选择点.然后,你也有机会按下`w`. (3认同)

Jos*_*sen 8

我发现了两种方法。


1。

?- set_prolog_flag(answer_write_options,[max_depth(0)]).
true.
Run Code Online (Sandbox Code Playgroud)

然后执行打印出截断列表的命令。

set_prolog_flag文档


2。

?- atom_chars(goodbye_prolog, X) ; true.
Run Code Online (Sandbox Code Playgroud)

AllOutput文档

放置; true.在通话的末尾,从而形成一长串。然后按w键盘上的键。结果是:

?- sudoku([_,_,2,3,_,_,_,_,_,_,_,_,3,4,_,_], Solution); true.
Solution = [4, 1, 2, 3, 2, 3, 4, 1, 1|...] [write]
Solution = [4, 1, 2, 3, 2, 3, 4, 1, 1, 2, 3, 4, 3, 4, 1, 2] ;
true.
Run Code Online (Sandbox Code Playgroud)