2011-11-22 18 views
14

मैं SWI-Prolog उपयोग कर रहा हूँ और मैं एक सूची मुद्रित करने के लिए कोशिश कर रहा हूँ, लेकिन अगर सूची 9 से अधिक आइटम नहीं है -SWI-Prolog - शो लंबी सूची

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

वहाँ है - यह है कि तरह लग रहे पूरी सूची दिखाने का एक तरीका? http://www.swi-prolog.org/FAQ/AllOutput.html

सरल उपाय डब्ल्यू टाइप करने के लिए के बाद जवाब दिया जाता है, यानी:

उत्तर

18

पर एक नज़र डालें

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

के बाद आप "डब्ल्यू" -कुंजी दबाया है "[ लिखो] "अंत में प्रदर्शित होता है और पूर्ण समाधान अगली पंक्ति में दिखाई देता है।

+3

यह काम नहीं करता है अगर प्रोलॉग केवल एक जवाब लौटा रहा है। –

+2

क्वेरी निर्धारणात्मक सफल होता है, तो आप बस लिख सकते हैं: '- समाधान (एस);? सच। ', यानी, बस संलग्न करें; एक विकल्प बिंदु पेश करने के लिए सच '। फिर, आपको 'डब्ल्यू' दबाए जाने का अवसर भी मिलता है। – mat

2

prolog केवल एक ही जवाब देता है, तो आप इसे टाइप करके इंतजार कर सकते हैं। "; सच" भविष्यवाणी के बाद। तो फिर, अगर आप "डब्ल्यू", आप पूरी सूची देखने के लिए के रूप में दस्तावेज़ में लिखा मिल जाएगा: http://www.swi-prolog.org/FAQ/AllOutput.html

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

यह बड़े करीने से पर्याप्त नहीं होगा। यही तो मैं करता हूं।

रूपांतर:

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

print_term करने के लिए [] तर्क एक (खाली) विकल्पों की सूची है। अधिक जानकारी के लिए see documentation

2

मैं दो तरीकों से पाया है।


1.

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

फिर अपने आदेश है कि एक छोटा सूची प्रिंट कर रहा है है।

(set_prolog_flag documentation)


2.

?- atom_chars(goodbye_prolog, X) ; true. 

(AllOutput documentation)

कॉल कि एक लंबी सूची में जो परिणाम के अंत में ; true. रखो। फिर अपने कीबोर्ड पर डब्ल्यू कुंजी दबाएँ। नतीजा यह है:

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