web-dev-qa-db-ja.com

SWI-Prolog-長いリストを表示

SWI-Prologを使用していて、リストを印刷しようとしていますが、リストに9つを超えるアイテムがある場合は、次のようになります。

[1, 15, 8, 22, 5, 19, 12, 25, 3|...] 

リスト全体を表示する方法はありますか?

20
TamarG

私は2つの方法を見つけました。


1.1。

?- set_prolog_flag(answer_write_options,[max_depth(0)]).
true.

次に、切り捨てられたリストを出力するコマンドを実行します。

set_prolog_flagドキュメント


2.2。

?- atom_chars(goodbye_prolog, X) ; true.

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.
7
Joseph Hansen

プロローグが答えを1つだけ返す場合は、「; true」と入力して待機させることができます。述語の後。次に、「w」を押すと、ドキュメントに記載されているリスト全体が表示されます: http://www.swi-prolog.org/FAQ/AllOutput.html

3
solalg
?- createListSomehow(List), print(List), nl.

十分にきちんとそれをします。それが私がしていることです。

変化:

?- use_module(library(pprint)). %load a library to do pretty-printing
?- createListSomehow(List), print_term(List,[]), nl.

[]への引数print_termは、オプションの(空の)リストです。詳細については、 ドキュメントを参照

1