2011-11-22 39 views
14

Tôi đang sử dụng SWI-Prolog và tôi đang cố gắng để in một danh sách nhưng nếu danh sách có hơn 9 mục - nó trông như thế -SWI-Prolog - show danh sách dài

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

là có một cách để hiển thị toàn bộ danh sách?

Trả lời

18

Có một cái nhìn tại địa chỉ: http://www.swi-prolog.org/FAQ/AllOutput.html

Giải pháp đơn giản là gõ w sau câu trả lời được đưa ra, ví dụ:

?- 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] 

Sau khi bạn đã nhấn "w" -key "[ viết] "được hiển thị ở cuối và giải pháp đầy đủ xuất hiện ở dòng tiếp theo.

+3

Điều này không có tác dụng nếu prolog chỉ trả lại một câu trả lời. –

+2

Nếu truy vấn thành công một cách xác định, bạn có thể chỉ cần viết: '? - solution (S); true.', tức là, chỉ cần nối thêm '; true' để giới thiệu một điểm lựa chọn. Sau đó, bạn cũng có cơ hội để nhấn 'w'. – mat

2

Nếu prolog chỉ trả về một câu trả lời, bạn có thể đợi câu trả lời bằng cách nhập "; true". sau biến vị ngữ. Sau đó, nếu bạn bấm "w", bạn sẽ nhận được để xem toàn bộ danh sách như được viết trong doc: http://www.swi-prolog.org/FAQ/AllOutput.html

0
?- createListSomehow(List), print(List), nl. 

sẽ làm điều đó gọn gàng đủ. Đó là những gì tôi làm.

Biến thể:

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

Các [] lập luận để print_term là một (trống) danh sách các tùy chọn. Để biết thêm thông tin, see documentation.

2

Tôi đã tìm thấy hai cách.


1.

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

Sau đó làm lệnh của bạn cũng được in một danh sách cắt ngắn.

(set_prolog_flag documentation)


2.

?- atom_chars(goodbye_prolog, X) ; true. 

(AllOutput documentation)

Đặt ; true. ở phần cuối của các cuộc gọi mà kết quả trong một danh sách dài. Sau đó, nhấn phím w trên bàn phím của bạn. Kết quả là:

?- 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. 
Các vấn đề liên quan