SWI-Prolog を使用していて、リストを印刷しようとしていますが、リストに項目が 9 つ以上ある場合は、次のようになります。
[1, 15, 8, 22, 5, 19, 12, 25, 3|...]
リスト全体を表示する方法はありますか?
SWI-Prolog を使用していて、リストを印刷しようとしていますが、リストに項目が 9 つ以上ある場合は、次のようになります。
[1, 15, 8, 22, 5, 19, 12, 25, 3|...]
リスト全体を表示する方法はありますか?
見てください: 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]」が表示され、次の行に完全なソリューションが表示されます。
私は2つの方法を見つけました。
1.
?- set_prolog_flag(answer_write_options,[max_depth(0)]).
true.
次に、切り捨てられたリストを出力するコマンドを実行します。
2.
?- atom_chars(goodbye_prolog, X) ; true.
; 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.
プロローグが 1 つの回答しか返さない場合は、「; true」と入力して待機させることができます。述語の後。次に、「w」を押すと、ドキュメントに書かれているようにリスト全体が表示されます: http://www.swi-prolog.org/FAQ/AllOutput.html
SWI-Prolog がデフォルトでリスト全体を表示するようにしたい場合は、次の行をinit ファイルに追加できます。
:- set_prolog_flag(answer_write_options,[max_depth(0)]).
初期化ファイルは GUI から簡単に変更できます (設定 => ユーザー初期化ファイル)。