28

SWI-Prolog を使用していて、リストを印刷しようとしていますが、リストに項目が 9 つ以上ある場合は、次のようになります。

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

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

4

5 に答える 5

32

見てください: 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] 

「w」キーを押すと、最後に「[write]」が表示され、次の行に完全なソリューションが表示されます。

于 2014-01-04T14:14:32.060 に答える
14

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


1.

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

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

( set_prolog_flag ドキュメント)


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.
于 2016-04-29T22:55:33.973 に答える
4

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

于 2016-02-17T02:05:59.847 に答える
1

SWI-Prolog がデフォルトでリスト全体を表示するようにしたい場合は、次の行をinit ファイルに追加できます。

:- set_prolog_flag(answer_write_options,[max_depth(0)]).

初期化ファイルは GUI から簡単に変更できます (設定 => ユーザー初期化ファイル)。

于 2020-07-25T11:49:45.880 に答える